make_initializable_iterator()迭代器常在使用了placeholder来初始化数据集的构造方法之后,其作用是来动态处理数据。具体代码如下:
input_files = tf.placeholder(tf.string)
dataset = tf.data.TFRecordDataset(input_files)
#由于tfrecords读取出来的是二进制数据,需要对每个数据进行解析,得到想要的格式
#这里使用映射函数对每个数据进行解析
dataset = dataset.map(parser)
#通过一个迭代器获取数据
iterator = dataset.make_initializable_iterator()
feat1,feat2 = iterator.get_next()
with tf.Session() as sess:
#注意要先对迭代器初始化
sess.run(iterator.initializer,feed_dict={input_files:['file1','file2']})
#由于不知道数据集大小,这里使用while循环,当全部数据访问完毕时,则抛出错误
while True:
try:
sess.run([feat1,feat2])
except:
break