Ситуация:
- У меня есть 2 кадра данных для прогнозирования одного скалярного значения.
- df_A пример:
- df_B пример:
Намерение:
- для df_A: сделать CNN и сгладить ()
(kernersize должен быть (3,1) из-за 'myIndex')
- для df_B: объединить df_B с результатом cnn для df_A
- Затем сгладьте () слой и сделайте его плотным для предсказания скалярного значения
Проблема:
создание слоя с использованием Keras, но моя потеря поезда не уменьшается.
Код:
train_A.shape : (3000,3)
train_B.shape : (1000,3)
train_y.shape : (1000,1)
val_A.shape : (900,3)
val_B.shape : (300,3)
val_y.shape : (300,1)
test_A.shape : (900,3)
test_B.shape : (300,3)
test_y.shape : (300,1)
re_train_A = train_A.reshape(-1, 3, 3, 1)
re_val_A = val_A.reshape(-1, 3, 3, 1)
re_test_A = test_A.reshape(-1, 3, 3, 1)
conv_input = Input(shape= (3, 3, 1), name = 'input_A')
conv_model = Conv2D(filters=10, kernel_size=(3,1), init='glorot_uniform',
activation='relu')(conv_input)
conv_model = Flatten()(conv_model)
fnn_input = Input(shape= (3, ), name = 'input_B')
fnn_model = Dense(10, init='glorot_uniform',activation='relu')(fnn_input)
merged_model = concatenate([conv_model, fnn_model])
merged_model = Dense(32, init='glorot_uniform',activation='relu')(merged_model)
total_ouput = Dense(1, init='glorot_uniform',activation='relu')(merged_model)
model = Model(inputs=[conv_input, fnn_input], outputs=[total_ouput])
opt = optimizers.Adam(lr = 0.001)
model.compile(optimizer=opt, loss='mse')
hist = model.fit({'input_A': re_train_A, 'input_B': train_B},
y= train_y,
validation_data = ({'input_A': re_val_A , 'input_B': val_B}, val_y),
epochs=500, batch_size=256)
Но когда тренируешься, моя потеря не уменьшается. пожалуйста, помогите.
Есть ли ошибка numpy.reshape?
или есть какая-то ошибка создания слоя?