What's difference between tf.sub and just minus operation in tensorflow? : <p>I am trying to use Tensorflow. Here is an very simple code.</p>

<pre><code>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)
</code></pre>

<p>Just ignore the optimization part (4th line). It will take a floating number and train W1 so as to increase squared difference.</p>

<p>My question is simple. If I use just minus sign instead of 
tf.sub" as below, what is different? Will it cause a wrong result? </p>

<pre><code>loss = tf.pow(train-W1, 2)
</code></pre>

<p>When I replace it, the result looks the same. If they are the same, why do we need to use the "tf.add/tf.sub" things?</p>

<p>Built-in back propagation calculation can be done only by the "tf.*" things? </p>
