tf.placeholder()
tf.placeholder(dtype, shape=None, name=None)
此函数可以理解为形参,用于定义过程,不必指定初始值,可在执行的时候再赋具体的值,如通过 Session.run 的函数的 feed_dict 参数指定
参数:
dtype:数据类型。常用的是tf.float32,tf.float64等数值类型
shape:数据形状。默认是None,就是一维值,也可以是多维,
比如[2,3], [None, 3]表示列是3,行不定
name:名称。
返回值:tensor
小栗子:
import tensorflow as tf
import numpy as np
x = tf.placeholder(tf.float32, shape=(1024, 1024))
y = tf.matmul(x, x)
with tf.Session() as sess:
#print(sess.run(y)) # ERROR: 此处x还没有赋值.
rand_array = np.random.rand(1024, 1024)
print(sess.run(y, feed_dict={x: rand_array})) # succeed.
结果:
[[260.20978 257.93347 256.23767 ... 253.33116 251.30048 248.8887 ]
[255.53735 252.85818 259.64197 ... 251.9226 248.15051 247.16235]
[262.88965 264.9173 265.6786 ... 257.01196 254.73787 257.24002]
...
[265.83624 258.34314 266.70068 ... 257.41058 256.4747 253.34645]
[267.03723 265.38562 261.83093 ... 257.02203 259.47336 252.12973]
[258.04462 252.23825 258.32202 ... 248.36617 253.3432 242.53035]]
另一个栗子:用于得到传递进来的真实的训练样本:
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.ones()|tf.zeros()
tf.ones(shape,type=tf.float32,name=None)
tf.zeros([2, 3], int32)
用法类似,都是产生尺寸为shape的张量(tensor)
栗子:
sess = tf.InteractiveSession()
x = tf.ones([2, 3], tf.int32)
print(sess.run(x))
结果:
[[1 1 1],
[1 1 1]]