我想知道make_initializable_iterator
和make_one_shot_iterator
之间的区别。
1. TensorFlow文档中提到:"one-shot" 迭代器目前不支持重新初始化。
这是什么意思?
2. 以下两个代码片段等价吗?
使用 make_initializable_iterator
iterator = data_ds.make_initializable_iterator()
data_iter = iterator.get_next()
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for e in range(1, epoch+1):
sess.run(iterator.initializer)
while True:
try:
x_train, y_train = sess.run([data_iter])
_, cost = sess.run([train_op, loss_op], feed_dict={X: x_train,
Y: y_train})
except tf.errors.OutOfRangeError:
break
sess.close()
使用make_one_shot_iterator
iterator = data_ds.make_one_shot_iterator()
data_iter = iterator.get_next()
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for e in range(1, epoch+1):
while True:
try:
x_train, y_train = sess.run([data_iter])
_, cost = sess.run([train_op, loss_op], feed_dict={X: x_train,
Y: y_train})
except tf.errors.OutOfRangeError:
break
sess.close()