2017-09-20 17 views
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 

答えて

1

を働きました。

次のことを試してみてください。

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) 

gen1_flow = in_gen1.flow(X_train[:,0, ::],y_train, batch_size=16) 
gen2_flow = in_gen2.flow(X_train[:,1, ::],y_train, batch_size=16) 

train_generator = zip(gen1_flow, gen2_flow) 

model.fit_generator(train_generator, 
        steps_per_epoch=len(X_train)/16, 
        epochs=epochs) 
+0

ありがとう!これはうまくいった。 – azure31

関連する問題