与(图像,遮罩)数据生成器中的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 ...
答案 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))