1、占位符:tf.placeholder
tf.placeholder(
dtype,
shape=None,
name=None
)
参数:
dtype
: 喂入张量的类型.shape
: 喂入张量的形状(可选项),如果没有指定,则喂入张量可以为任意形状name
: 定义placeholder 的名字(可选项).
返回:
一个Tensor,相当于为变量分配了一个存储空间,但不能直接计算.
# 使用占位符
import tensorflow as tf
x1 = tf.placeholder(dtype=tf.float32, shape=None)
y1 = tf.placeholder(dtype=tf.float32, shape=None) # 定义一个占位符 类型为 tf.float32 大小为 None, 为None时为任意形状
z1 = x1 + y1 # z1 = x1 + y1
x2 = tf.placeholder(dtype=tf.float32, shape=[2, 1]) # 定义一个占位符 类型为 tf.float32 大小为 2x1。
y2 = tf.placeholder(dtype=tf.float32, shape=[1, 2]) # 定义一个占位符 类型为 tf.float32 大小为 1x2。
z2 = tf.matmul(x2, y2) # 点乘 结果大小 2x2
with tf.Session() as sess:
# 运行一个操作
z1_value = sess.run(z1, feed_dict={x1: 1, y1: 2}) # feed_dict 相当于对 x1,y1 进行赋值 x1=1, y2=2
print('z1_value=%f' % z1_value)
# 执行两个操作
z1_value, z2_value = sess.run([z1, z2], # 执行 z1, z2 。这里有多少个操作将会返回多少个值
feed_dict={ # 喂入数据
x1: [[1, 2]], y1: [[1, 2]],
x2: [[1], [2]], y2: [[1, 2]]
})
print('z1_value=', z1_value)
print('z2_value=', z2_value)
结果:
z1_value=3.000000
z1_value= [[ 2. 4.]]
z2_value= [[ 1. 2.],
[ 2. 4.]]