Я использую простую модель Keras с 2 плотными слоями в качестве выхода:
orientation = Dense(3, activation="linear", name='orientation')(base_output)
position = Dense(3, activation="linear", name='position')(base_output)<br>
model = Model(inputs=model.inputs, outputs=[position, orientation])
Мой Pandas информационный кадр содержит траектории изображений, данные о положении и ориентации (массивы из 3 элементов) ):
paths position orientation
0 /pth/to/img [0.001509, 0.707734, 0.020575] [-0.535463, 0.196570, -1.011444]
Я использую генератор поездов и обертку генератора:
train_datagen = ImageDataGenerator(rescale = 1./255, horizontal_flip = False,
fill_mode = "nearest", zoom_range = 0,
width_shift_range = 0, height_shift_range=0,
rotation_range=0)
train_generator = train_datagen.flow_from_dataframe(train_dataframe, directory=None, x_col='paths', y_col=['position', 'orientation'], weight_col=None, target_size=(224, 224), color_mode='rgb', classes=None, class_mode='raw', batch_size=32, shuffle=True, seed=None, save_to_dir=None, save_prefix='', save_format='png', subset=None, interpolation='nearest', validate_filenames=True)
def generator_wrapper(generator):
for batch_x,batch_y in generator:
yield (batch_x,[batch_y[:,i] for i in range(2)])
Но получаю эту ошибку при попытке подгонки модели с fit_generator: ValueError: Ошибка при проверке цели: ожидаемая позиция будет иметь форму (3,), но получила массив с формой (1,)
Есть ли способ заполнить мои плотные слои массивами, используя этот поток? Заранее спасибо.