1
ケアでSiameseネットワークを実装しようとしていますが、Keras Image Data Generatorsを使用して2つの入力画像に画像変換を適用したいとします。 docs- https://keras.io/preprocessing/image/での例のように、私はthis-2つのケラスジェネレータ関数を組み合わせるには
datagen_args = dict(rotation_range=10,
width_shift_range=0.1,
height_shift_range=0.1,
horizontal_flip=True)
in_gen1 = ImageDataGenerator(**datagen_args)
in_gen2 = ImageDataGenerator(**datagen_args)
train_generator = zip(in_gen1, in_gen2)
model.fit(train_generator.flow([pair_df[:, 0,::],pair_df[:, 1,::]],
y_train,batch_size=16), epochs, verbose = 1)
のようにそれを実装しようとした。しかし、このコードは、このエラーがスローされます。
TypeError例外:引数#1は、反復
をサポートしている必要がありますzipファイルをKeras - Generator for large dataset of Images and Masksで提案されているようにitertools.izip
を試しましたが、同じエラーが発生します。
どうすれば解決できますか?
EDIT:場合は誰もが興味を持っている、これはあなたが最初のフロー法を使用して反復可能なものに変換する必要がfinally-
datagen_args = dict(
featurewise_center=False,
rotation_range=10,
width_shift_range=0.1,
height_shift_range=0.1,
horizontal_flip=True)
in_gen1 = ImageDataGenerator(**datagen_args)
in_gen2 = ImageDataGenerator(**datagen_args)
in_gen1 = in_gen1.flow(pair_df[:, 0,::], y_train, batch_size = 16, shuffle = False)
in_gen2 = in_gen2.flow(pair_df[:, 1,::], y_train, batch_size = 16, shuffle = False)
for e in range(epochs):
batches = 0
for x1, x2 in itertools.izip(in_gen1,in_gen2):
# x1, x2 are tuples returned by the generator, check whether targets match
assert sum(x1[1] != x2[1]) == 0
model.fit([x1[0], x2[0]], x1[1], verbose = 1)
batches +=1
if(batches >= len(pair_df)/16):
break
ありがとう!これはうまくいった。 – azure31