Skip to main content
 首页 » 编程设计

python之通过 Tensorflow 数据集生成器迭代批处理

2024年11月01日34飞鱼

假设我有

sequence = np.array([[1],[2],[3],[4],[5]]) 

我定义了一个生成器

def generator(): 
    for el in sequence: 
        yield el 

现在,我希望使用 Tensorflow 中定义的 from_generator() 来从生成器中检索数据。

dataset = tf.data.Dataset().from_generator(generator, 
                                       output_types= tf.int64,  
                                       output_shapes=(tf.TensorShape([1]))) 
iterator = dataset.make_initializable_iterator() 
el = iterator.get_next() 

为了检索我用过的,

with tf.Session() as sess: 
    sess.run(iterator.initializer) 
    print(sess.run(el)) 
    print(sess.run(el)) 
    print(sess.run(el)) 
    print(sess.run(el)) 
    print(sess.run(el)) 

有没有办法使用循环获取“el”,而不是每次都执行 sess.run(el)?

请您参考如下方法:

这应该能达到你想要的效果:

with tf.Session() as sess: 
    sess.run(iterator.initializer) 
    try: 
        while True: 
            print(sess.run(el)) 
    except tf.errors.OutOfRangeError: 
        print("Iterating finished") 
        pass