Difference between tf.constant and tf.Variable (trainable= False)
There may be other differences, but one that comes to mind is that, for some TF graphs, you want a variable to be trainable sometimes and frozen other times.  For example, for transfer learning with convnets you want to freeze layers closer to the inputs and only train layers closer to the output.  It would be inconvenient, I suppose, if you had to swap out all the tf.Variable layers for tf.constant layers.
I came across some code where tf.Variable(... trainable=False) was used and I wondered whether there was any difference between using tf.constant(...) and tf.Variable(with the trainable argument set to False)
It seems a bit redundant to have the trainable argument option available with tf.constant is available.