【问题标题】:Vertical training loss in history plot历史图中的垂直训练损失
【发布时间】: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


    【解决方案1】:

    问题解决了。我没有注意到与其他 epoch 相比,第一个 epoch 的损失明显更高。

    {'loss': [87756.7265625, 15.339912414550781, 0.4351891875267029 ...
    

    在第二个 epoch 之后,loss 总是

    我包含一个指向this SO post 的链接:“为什么 Keras 损失在第一个 epoch 之后急剧下降?”作为遇到此问题的任何人的额外资源。

    【讨论】:

      猜你喜欢
      • 2022-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-05
      • 1970-01-01
      • 2018-07-12
      • 2019-04-02
      • 1970-01-01
      相关资源
      最近更新 更多