title: What's difference between tf.sub and just minus operation in tensorflow?
body: <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>