Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TensorFlow:参数为张量的分布的随机正态值_Python_Tensorflow_Normal Distribution - Fatal编程技术网

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)
你能提供一份详细的报告吗?我无法重现你所犯的错误。