两者的主要区别在于:markdown
tf.Variable:主要在于一些可训练变量(trainable variables),好比模型的权重(weights,W)或者偏执值(bias);函数
weights = tf.Variable(
tf.truncated_normal([IMAGE_PIXELS, hidden1_units],
stddev=1./math.sqrt(float(IMAGE_PIXELS)), name='weights') ) biases = tf.Variable(tf.zeros([hidden1_units]), name='biases')
tf.placeholder:用于获得传递进来的真实的训练样本:post
images_placeholder = tf.placeholder(tf.float32, shape=[batch_size, IMAGE_PIXELS]) labels_placeholder = tf.placeholder(tf.int32, shape=[batch_size])
以下则是两者真实的使用场景:ui
for step in range(FLAGS.max_steps): feed_dict = { images_placeholder = images_feed, labels_placeholder = labels_feed } _,loss_value = sess.run([train_op, loss], feed_dict=feed_dict)
当执行这些操做时,tf.Variable 的值将会改变,也即被修改,这也是其名称的来源(variable,变量)。spa
What’s the difference between tf.placeholder and tf.Variablecode