placeholder是占位符,在tensorflow里是代替数据的存在,在一开始用的时候,总是搞错,现在小结一下用法,主要是比较用了placeholder和没有用placeholder的区别
假设数据为 x_data,输出数据为 y_data,预测为y_pred
输入输出的placeholder分别为xs,xy
拟合函数为
placeholder实际是就是用xs,yx代替原来的 x_data 和 y_label。
1. 在开始定义占位符
#####################################################################################
# 1. 定义placeholder
xs = tf.placeholder(shape=[None, 1], dtype=tf.float32, name='ph_data')
ys = tf.placeholder(shape=[None, 1], dtype=tf.float32, name='ph_label')
#####################################################################################
2. 预测数据的时候,需要把输入数据x_data,替换为placeholder,这时候预测的数据完全依赖于placeholder,如果不喂数据,是不会有结果的,原来直接用x_data算,是可以直接出数据的
#####################################################################################
# 2.输入数据替换成placeholder
y_pred = weight * xs + bias
#####################################################################################
weight 和 bias 是 tensorflow 类型的变量
3. 比较数据的时候,把输出 y_label 数据替换成 placeholder ,这很容易理解,因为 y_pred 已经依赖于placeholder了,所以输出也应该是palceholder,这样才能对应上
#####################################################################################
# 3.把输出真实值替换成placeholder
loss = tf.losses.mean_squared_error(y_pred, ys)
#####################################################################################
4. 在Session里,喂入数据
#####################################################################################
# 4. 给placeholder feed 数据,真实的输入与输出
sess.run(train_op, feed_dict={xs:x_data, ys:y_label})
#####################################################################################