【发布时间】:2021-12-31 22:41:50
【问题描述】:
为什么我的损失在图中是垂直的?我正在 Keras 和 TF 中训练具有单个输出的多头回归模型。
我已经包括了前几个时期的损失:
'history': {'loss': [87756.7265625, 15.339912414550781, 0.4351891875267029, 0.413672536611557, 0.4036506116390228, 0.4017665684223175, 0.4009793996810913, 0.40057373046875, 0.4004470109939575, 0.40035486221313477, 0.4005628526210785, 0.40025919675827026, 0.3998614251613617, 0.4000871181488037, 0.39995384216308594,
数据集形状:
X_train = [input_1, input_2, input_3] #(543, 318, 13) (543, 176, 13) (543, 60, 13)
y_train.shape #(543, 1)
X_val = [input_1_val, input_2_val, input_3_val] #(155, 318, 13) (155, 176, 13) (155, 60, 13)
y_val.shape #(155, 1)
代码:
# first input model
input_1 = layers.Input(shape=input1_shape) #(543, 318, 13)
cnn1 = layers.Conv1D(filters=64, kernel_size=2, activation='relu')(input_1)
cnn1 = layers.MaxPooling1D(pool_size=2)(cnn1)
cnn1 = layers.Flatten()(cnn1)
# second input model
input_2 = layers.Input(shape=input2_shape) #(543, 176, 13)
cnn2 = layers.Conv1D(filters=64, kernel_size=2, activation='relu')(input_2)
cnn2 = layers.MaxPooling1D(pool_size=2)(cnn2)
cnn2 = layers.Flatten()(cnn2)
# third input model
input_3 = layers.Input(shape=input3_shape) #(543, 60, 13)
cnn3 = layers.Conv1D(filters=64, kernel_size=2, activation='relu')(input_3)
cnn3 = layers.MaxPooling1D(pool_size=2)(cnn3)
cnn3 = layers.Flatten()(cnn3)
# merge input models
merge = layers.concatenate([cnn1, cnn2, cnn3])
dense = layers.Dense(50, activation='relu')(merge)
output = layers.Dense(1)(dense)
model = Model(inputs=[input_1, input_2, input_3], outputs=output) #keras.models
model.compile(optimizer=Adam(learning_rate=lr), loss=MeanSquaredError(), metrics=["mse", "mae"])
history = model.fit(x=X_train, y=y_train, epochs=epochs, batch_size=batch_size, validation_data=(X_val, y_val), verbose=1)
plt.plot(history.history["loss"])
plt.plot(history.history["val_loss"])
plt.title('Model Loss vs Epoch')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['train', 'validation'], loc='upper left')
plt.show()
【问题讨论】:
标签: keras tensorflow2.0