学习笔记6:TensorFlow编程语法--占位符

TensorFlow中的Variable变量类型,在定义时需要初始化,但有些变量定义时并不知道其数值,只有当真正开始运行程序时,才由外部输入,比如训练数据,这时候需要用到占位符。

TensorFlow占位符Placeholder,先定义一种数据,其参数为数据的Type和Shape

tf.placeholder(dtype, shape=None, name=None),dtype必须填写。

如果构建了一个包含placeholder操作的计算图,当在session中调用run方法时,placeholder占用的变量必须通过feed_dict参数传递进去,否则报错。

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()     # 解决方案:注释tf的引用,换为兼容模式。

a = tf.placeholder(tf.float32, name='a')
b = tf.placeholder(tf.float32, name='b')
c = tf.multiply(a, b, name='c')
init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    # 通过feed_dict的参数传值,按字典格式
    result = sess.run(c, feed_dict={a: 8.0, b: 3.5})
    print(result)

# 一次返回多个值分别赋给多个变量方法1
a1 = tf.placeholder(tf.float32, name='a1')
b1 = tf.placeholder(tf.float32, name='b1')
c1 = tf.multiply(a1, b1, name='c1')
d1 = tf.subtract(a1, b1, name='d1')
init1 = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init1)
    result = sess.run([c1, d1], feed_dict={a1: [8.0, 2.0, 3.5], b1: [1.5, 2.0, 4.]})  # 向量
    print(result)
    # 取结果中的第一个
    print(result[0])

# 一次返回多个值分别赋给多个变量方法2
with tf.Session() as sess:
    sess.run(init1)
    # 返回两个值分别赋给两个变量
    rc, rd = sess.run([c1, d1], feed_dict={a1: [8.0, 2.0, 3.5], b1: [1.5, 2.0, 4.]})
    print("Value of c=", rc, "value of d=", rd)

你可能感兴趣的:(学习总结,tensorflow,python,人工智能)