【问题标题】:keras fit_generator: 'zip' object has no attribute 'shape'keras fit_generator:“zip”对象没有属性“shape”
【发布时间】:2019-08-28 02:05:48
【问题描述】:

就像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...

【问题讨论】:

  • 来自this keras rstudio issue 似乎keras不再接受迭代器,这是zip根据docs返回的内容
  • @Yael N:这个问题现在解决了吗?否则,您能否分享(如果可能)完整的代码,以便我们可以在最后重现它并帮助您解决问题。谢谢!

标签: tensorflow tf.keras


【解决方案1】:

Tensorflow 1.13 中对 fit_generator 的支持似乎已更改。 正如issue 中提到的, 解决方法,

替换

train_generator = zip(input_gen, output_gen)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 2022-11-26
    • 2019-07-12
    • 1970-01-01
    • 2018-01-22
    • 2016-07-31
    • 2022-08-21
    相关资源
    最近更新 更多