keras fit_generator:'zip'对象没有属性'shape'

时间:2019-04-06 09:37:36

标签: tensorflow tf.keras

与(图像,遮罩)数据生成器中的keras documentation一样,我创建了数据生成器以具有(输入,输出)元组图像。
在我的笔记本电脑(带有tensorflow 1.13.1)上本地运行时,它没有问题,但是在服务器上(带有tensorflow- gpu 1.13.1)运行时,出现了错误:

AttributeError: 'zip' object has no attribute 'shape'

如示例中所示,在使用flow_from_directory创建两个生成器之后:

from tensorflow import keras

...

input_gen = input_datagen.flow_from_directory(
        directory=os.path.join(path_in, dirname),
        class_mode=None,
        color_mode=color_mode,
        batch_size=batch_size,
        target_size=(img_size, img_size),
        seed=seed_in)

我将它们结合在keras文档中:

train_generator = zip(input_gen, output_gen)

并将其输入到fit_generator(...)

目前使用建议的here函数来生成新的组合生成器来解决它:

def combine_generator(gen1, gen2):
    while True:
        yield(gen1.next(), gen2.next())   

尽管我仍然想了解为什么tensorflow cpu版本没有出现此错误,以及为什么gpu版本不支持zip ...

1 个答案:

答案 0 :(得分:0)

看起来 Tensorflow 1.13 中对 fit_generator 的支持已更改。 如本 issue 所述, 解决方法,

替换

train_generator = zip(input_gen, output_gen)

train_generator = (pair for pair in zip(input_gen, output_gen))