简介
在代码层面上,每一个tensor值在graph上都是一个op,当我们将train数据分成一个个minibatch然后传入网络上进行训练时,每一个minibatch都将是一个op,这样的话,一幅图上的op未免太多,也会产生巨大的开销;于是就有了tf.placeholder(),即,我们每次可以将一个minitatch传入到 x = tf.placeholder(tf.float32, [None, 32])上,下一次传入的x都替换掉上一次传入的x,这样就对于所有传入的minibatch x就只会产生一个op,不会产生其他多余的op,进而减少了graph的开销.
函数的形式:
tf.placeholder(
dtype,
shape = None,
name = None
)
函数参数:
- dtype: 数据类型; 常用的是tf.float32, tf.float64等数值类型
- shape: 数据形状; 默认是None, 就是一维值, 也可以是多维(例如[2,3], [None, 3]表示列是3,行不定)
- name: 名称
返回
- Tensor类型
实现
import tensorflow as tf
import tensorflow._api.v2.compat.v1 as tf
tf.disable_v2_behavior()
import numpy as np
from enum import Enum
from data.create_data import Distribution
from functools import wraps
x = tf.placeholder(tf.float32)
y = tf.constant(5.6)
output = tf.add(x, y)
with tf.Session() as sess:
print(sess.run(output, feed_dict={x:3, y:5}))