二者的主要区别
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')
images_placeholder = tf.placeholder(tf.float32, shape=[batch_size, IMAGE_PIXELS]) labels_placeholder = tf.placeholder(tf.int32, shape=[batch_size])
二者真实的使用场景
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,变量)。
函数说明
tf.placeholder(dtype, shape=None, name=None)
参数:
[html] view plain copy
返回:Tensor 类型
placeholder(type,strucuct…)是tensorflow中又一保存数据的利器,它的第一个参数是你要保存的数据的数据类型,大多数是tensorflow中的float32数据类型,后面的参数就是要保存数据的结构,比如要保存一个1×2的矩阵,则struct=[1 2]。它在使用的时候和前面的variable不同的是在session运行阶段,需要给placeholder提供数据,利用feed_dict的字典结构给placeholdr变量“喂数据”。
举个栗子
# -*- coding: utf-8 -*-
"""
Created on
@author:
"""
import tensorflow as tf
a=tf.placeholder(tf.float32)
b=tf.placeholder(tf.float32)
c=tf.add(a,b)
with tf.Session() as sess:
print(sess.run(c,feed_dict={a:10,b:30})) #把10赋给a,30赋给b
运行结果:
40.0
输入一个数据类型为float32,数据格式为[……],名称为x-input的参数
参考资料
What’s the difference between tf.placeholder and tf.Variable
https://blog.csdn.net/zj360202/article/details/70243127