“的结果;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
调用将急切地执行一次,因此不会得到不同的结果,因为两次减法都将使用相同的随机数。