python - tf.sub 和 tensorflow 中的减法运算有什么区别?

标签 python tensorflow

我正在尝试使用 Tensorflow。这是一个非常简单的代码。

train = tf.placeholder(tf.float32, [1], name="train")
W1 = tf.Variable(tf.truncated_normal([1], stddev=0.1), name="W1")
loss = tf.pow(tf.sub(train, W1), 2)
step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

忽略优化部分(第 4 行)。它将取一个 float 并训练 W1 以增加平方差。

我的问题很简单。如果我只使用减号而不是 tf.sub"如下,有什么不同?会不会导致错误的结果?

loss = tf.pow(train-W1, 2)

当我替换它时,结果看起来是一样的。如果都一样,为什么还要用到“tf.add/tf.sub”的东西呢?

内置反向传播计算只能通过“tf.*”的东西来完成?

最佳答案

是的,- 和 + 解析为 tf.sub 和 tf.add。如果您查看 tensorflow 代码,您会发现 tf.Variable 上的这些运算符被 tf.* 方法重载。

至于为什么两者都存在,我假设 tf.* 的存在是为了保持一致性。所以 sub 和 say matmul 操作可以以同样的方式使用。而运算符重载是为了方便。

关于python - tf.sub 和 tensorflow 中的减法运算有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36110834/

相关文章:

python - Tensorflow:InvalidArgumentError:预期的图像(JPEG,PNG或GIF),文件为空

python - 被 tensorflow 输出混淆

python - 使用 numpy.char 函数需要哪些 numpy 结构作为输入?

python - 如何递归组合(链)列表?

python - Docker python 使用 ODPI-C 进行 Oracle 数据库连接

python - 在 BeagleBone Black 中创建和链接 GUI

python - SQLAlchemy 窗口框架作为时间间隔

python - 如何在keras CNN中使用黑白图像?

python - VirtualBox 内存异常 - 使用 TensorFlow 和 Docker 的 std::bad_alloc

azure - 从 dockerfile 构建 Azure 机器学习环境(tensorflow)失败