“的结果;tf.减去;与预期的不一样 将tensorflow导入为tf a=tf.随机正态([3,2],均值=6,标准差=0.1,种子=1) b=tf.随机正态([3,2],平均值=1,标准差=1,种子值=1) sess=tf.Session() ra=sess.run(a) rb=sess.run(b) r1=ra-rb r2=sess.run(tf.减去(a,b))
为什么“的结果;tf.减去;与预期的不一样 将tensorflow导入为tf a=tf.随机正态([3,2],均值=6,标准差=0.1,种子=1) b=tf.随机正态([3,2],平均值=1,标准差=1,种子值=1) sess=tf.Session() ra=sess.run(a) rb=sess.run(b) r1=ra-rb r2=sess.run(tf.减去(a,b)),tensorflow,Tensorflow,为什么r1和r2不相等? 理论上不应该是一样的吗 tensorflow版本:1.15.0在tensorflow 1.x中,因为在每个会话中tf.random\u normal生成一组新的数字,这是结果发生变化的原因,正如@xdurch0和@Addy在注释部分正确提到的那样。 相反,您可以使用tf.constant设置常量并比较结果 Tensorflow 1.x: 导入tensorflow作为tf a = tf.constant([[5.918868 , 6.14846 ], [6
r1
和r2
不相等?
理论上不应该是一样的吗
tensorflow版本:1.15.0在
tensorflow 1.x
中,因为在每个会话中tf.random\u normal
生成一组新的数字,这是结果发生变化的原因,正如@xdurch0和@Addy在注释部分正确提到的那样。
相反,您可以使用tf.constant
设置常量并比较结果
Tensorflow 1.x:
导入tensorflow作为tf
a = tf.constant([[5.918868 , 6.14846 ],
[6.006533 , 5.7557297],
[6.009925 , 6.0591226]])
b = tf.constant([[0.32409406, 1.2866583 ],
[1.3215888 , 2.2124639 ],
[0.19414288, 0.86650544]])
sess=tf.Session()
ra=sess.run(a)
rb=sess.run(b)
r1=ra -rb
r2=sess.run(tf.subtract(a,b))
print(r1)
print(r2)
结果:
[[5.5947742 4.8618016]
[4.684944 3.5432658]
[5.815782 5.192617 ]]
[[5.5947742 4.8618016]
[4.684944 3.5432658]
[5.815782 5.192617 ]]
tf.Tensor(
[[5.5947742 4.8618016]
[4.684944 3.5432658]
[5.815782 5.192617 ]], shape=(3, 2), dtype=float32)
tf.Tensor(
[[5.5947742 4.8618016]
[4.684944 3.5432658]
[5.815782 5.192617 ]], shape=(3, 2), dtype=float32)
Tensorflow 2.x:
在Tensorflow 2.x
中,由于默认情况下启用了急切执行,因此tf.random.normal
将立即执行,并将结果保留到代码的其余部分
import tensorflow as tf
a=tf.random.normal([3, 2], mean=6, stddev=0.1, seed=1)
b=tf.random.normal([3, 2], mean=1, stddev=1, seed=1)
r1=a-b
r2=tf.subtract(a,b)
print(r1)
print(r2)
结果:
[[5.5947742 4.8618016]
[4.684944 3.5432658]
[5.815782 5.192617 ]]
[[5.5947742 4.8618016]
[4.684944 3.5432658]
[5.815782 5.192617 ]]
tf.Tensor(
[[5.5947742 4.8618016]
[4.684944 3.5432658]
[5.815782 5.192617 ]], shape=(3, 2), dtype=float32)
tf.Tensor(
[[5.5947742 4.8618016]
[4.684944 3.5432658]
[5.815782 5.192617 ]], shape=(3, 2), dtype=float32)
你是说tf.subtract(a,b)
而不是tf.subtract(a-b)
?Sry,我犯了一个错误。它应该是tf。减去(a,b)
你也可以添加你的tensorflow版本吗?显然,您正在运行tensorflow 1.x版。考虑升级到TF2。每个会话运行为<代码> < <代码> > <代码> B<代码>产生新的随机值。因此,结果当然会有所不同。请注意,在TF2中,random\u normal
调用将急切地执行一次,因此不会得到不同的结果,因为两次减法都将使用相同的随机数。