Python TensorFlow:参数为张量的分布的随机正态值
我想创建一个输出,从正态分布中获取一个随机值,但正态分布的参数基于张量变量 例如:Python TensorFlow:参数为张量的分布的随机正态值,python,tensorflow,normal-distribution,Python,Tensorflow,Normal Distribution,我想创建一个输出,从正态分布中获取一个随机值,但正态分布的参数基于张量变量 例如: 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) 其中“new”为一维变量类型tf.Variable。这会抛出一个错误,即: ValueError:使用序列设置数组元素 我很确定这是把张量作为参数加入到这两
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)
其中“new”为一维变量类型tf.Variable
。这会抛出一个错误,即:
ValueError:使用序列设置数组元素
我很确定这是把张量作为参数加入到这两个随机的正规函数中。如何实现我想要的?在
Tensorflow 2.x版中,将x
替换为np.abs(x)
new=tf.map\u fn(lambda x:np.random.normal(0,x,0.1)[0],new)
解决错误
当一个Tensor
作为参数传递给两个random时,代码将成功运行。正常的函数如下所示:
%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)
输出如下所示:
%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)
你能提供一份详细的报告吗?我无法重现你所犯的错误。