tf.sub和tensorflow中的只是减去操作有什么区别?

YW *_*won 20 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)
Run Code Online (Sandbox Code Playgroud)

只需忽略优化部分(第4行).它将采用浮点数并训练W1以增加平方差.

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

loss = tf.pow(train-W1, 2)
Run Code Online (Sandbox Code Playgroud)

当我更换它时,结果看起来一样.如果它们是相同的,为什么我们需要使用"tf.add/tf.sub"的东西呢?

内置的反向传播计算只能通过"tf.*"来完成吗?

Dan*_*ter 15

是的, - 和+解析为tf.sub ad tf.add.如果你看一下tensorflow代码,你会发现tf.Variable上的这些运算符都是用tf.*方法重载的.

至于为什么两者都存在,我假设存在tf.*的一致性.所以sub和matmul操作可以以相同的方式使用.虽然操作员超载是为了方便.