TensorFlow资源管理
Resources
tf.placeholder
placeholder:占位符,执行时通过feed_dict
参数设置值
1 | tf.placeholder( |
shape
:并不必须,但最好设置参数方便debug
- 需要导入数据给placeholder,可能影响程序速度
- 方便用户替换图中值
tf.data.DataSet
1 | class tf.data.DataSet: |
创建只能迭代一轮的迭代器
1
2
3
4
5
6
7
8
9iterator = dataset.make_one_shot_iterator()
# 这里`X`、`Y`也是OPs,在执行时候才返回Tensor
X, Y = iterator.get_next()
with tf.Session() as sess:
print(sess.run([X, Y]))
print(sess.run([X, Y]))
print(sess.run([X, Y]))
# 每次不同的值创建可以多次初始化的迭代器
1
2
3
4
5
6
7
8
9
10
11
12iterator = data.make_initializable_iterator()
with tf.Session() as sess:
for _ in range(100):
# 每轮重新初始化迭代器,重新使用
sess.run(iterator.initializer)
total_loss = 0
try:
while True:
sess.run([optimizer])
# 手动处理迭代器消耗完毕
except tf.error.OutOfRangeError:
passtf.data
和tf.placeholder
适合场景对比tf.data
速度更快、适合处理多数据源tf.placeholder
更pythonic、原型开发迭代速度快
读取文件数据
可以从多个文件中读取数据
1 | # 文件每行为一个entry |
tf.data.Iterator
1 | class tf.data.Iterator: |