私は(320 * 320)の形の3000画像とその撮影時間とそのラベルを持っています。これらの2種類のデータ(画像と時間)を使用してラベルを予測したいと考えています。メインのコードは次のよう:ケラスでは、異なるタイプの複数の入力データをどのように適合させるのですか
model.fit([main_input, additional_data], [labels],
epochs=50, batch_size=32)
しかし、私はデータaugumentionを使用しているため、両方のfit_generatorを使用しても、時間の機能を使用する方法:
num_classes=10
image_out=GlobalMaxPooling2D()(x)
x=keras.layers.advanced_activations.LeakyReLU(alpha=0.3)(x)
#add time
time_input = Input(shape=(1,), name='time_input')
x = keras.layers.concatenate([image_out, time_input],axis=-1)
x=Dense(num_classes, activation='sigmoid')(x)
predictions = Dense(num_classes,activation='softmax',name='main_output')(x)
を私はモデルを訓練するために、次のコードを使用することができます知っていますモデルを訓練する?このような新しいジェネレータを定義する必要がありますか?
def generator_for2img(X1, X2, Y,batch_size):
datagen = ImageDataGenerator(featurewise_center=False, # set input mean to 0 over the dataset
samplewise_center=False, # set each sample mean to 0
featurewise_std_normalization=False, # divide inputs by std of the dataset
samplewise_std_normalization=False, # divide each input by its std
zca_whitening=False, # apply ZCA whitening
rotation_range=0, # randomly rotate images in the range (degrees, 0 to 180)
width_shift_range=0.1, # randomly shift images horizontally (fraction of total width)
height_shift_range=0.1, # randomly shift images vertically (fraction of total height)
horizontal_flip=True, # randomly flip images
vertical_flip=False) # randomly flip image
time_generator=Generator()
datagen.fit(X1)
genX1 = datagen.flow(X1,Y,batch_size=batch_size)
genX2 = time_generator.flow(X2,batch_size=batch_size)
while True:
X1i = genX1.next()
X2i = genX2.next()
yield [X1i[0], X2i ], X1i[1]
model.fit_generator(generator_for2img(X_train_cv, X_train_time, y_train_cv,batch_size),
epochs=epochs,
validation_data=([X_valid,X_valid_time],y_valid),
workers=4,