tensorflow - “tf.subtract”的结果与预期的不一样
问题描述
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)
sess=tf.Session()
ra=sess.run(a)
rb=sess.run(b)
r1=ra-rb
r2=sess.run(tf.subtract(a,b))
为什么是r1
和r2
不相等?理论上不应该一样吗?</p>
张量流版本:1.15.0
解决方案
因为在Tensorflow 1.x
每个中都会session
生成tf.random_normal
一组新的数字,这是@xdurch0 和@Addy 在评论部分正确提到的结果变化的原因。相反,您可以使用和比较结果
来设置常数。tf.constant
张量流 1.x:
将张量流导入为 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 ]]
张量流 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)
结果:
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)
推荐阅读
- google-apps-script - Google 日历 ID 授权/配置
- javascript - How to split moment dates into array from time slot?
- azure-data-factory - ADF - 在复制数据流中使用循环中的参数
- powerbi - 搜索特定单词并将其提取到 Power BI DAX 中的新列中
- postgresql - 如何在 PostgreSQL 中将 DEFAULT 插入到准备好的语句中
- php - PHP 代码 - 将二维数组转换为一维数组 $vector - 函数 toVector 和 toArray - 怎么做?
- java - 如何解决ID无法恢复实体的问题?
- scala - 使用 JsonFile 中的值创建对象
- python - Python数据框:计算所有列的平均值/差异/总和/ ...
- c# - 如何按ID显示或获取访问数据库的所有名称