我想创建一个输出,在该输出中我从正态分布中获取一个随机值,但是正态分布的参数基于张量变量。
例如:
new = tf.map_fn(lambda x: tf.random.normal([1], x, 1.0), new)
new = tf.map_fn(lambda x: np.random.normal(0, x, 0.1)[0], new)
其中“新”是一维的tf.Variable
类型。这会引发错误:
ValueError:设置具有序列的数组元素。
我很确定这是将张量作为参数添加到这两个random.normal函数中。我如何实现自己想要的?
在Tensorflow Version 2.x
中,用行中的x
替换np.abs(x)
,
new = tf.map_fn(lambda x: np.random.normal(0, x, 0.1)[0], new)
解决了该错误。
下面显示的代码将Tensor
作为参数传递给两个random.normal
函数时成功运行:
%tensorflow_version 2.x
import tensorflow as tf
import numpy as np
new = tf.Variable([1.])
new = tf.map_fn(lambda x: tf.random.normal(shape = [1], mean = x, stddev = 1), new)
new = tf.map_fn(lambda x: np.random.normal(0, np.abs(x), 1)[0], new)
print(new)
输出如下所示:
tf.Tensor([0.00095569], shape=(1,), dtype=float32)