我在Colab上为我的光通信项目训练一个模型,然后发生了一件奇怪的事情。我首先训练的模型显示了接近99%的训练和97%的验证准确率,但运行时在晚上的某个时候到期了。现在,对于相同的模型,我尝试在重新连接到运行时后重新训练。但现在,准确率从第一个时期起保持不变,为25%。令人惊讶的是,有4个类别,我的模型将它们都分类为0.25。我不确定是什么导致了这个错误,因为在几次重新启动后,模型显示出与原始性能相似的性能,但现在它又回到了25%的准确率。请参考图片和下面的型号规格。
model_fm = tf.keras.Sequential([
tf.keras.layers.Conv1D(256,kernel_size = 3, activation = 'relu', input_shape = x_train.shape[1:]),
tf.keras.layers.Dropout(0.3),
tf.keras.layers.Conv1D(128,kernel_size = 3, activation = 'relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Conv1D(64,kernel_size = 3, activation = 'relu'),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(256, activation = 'relu'),
tf.keras.layers.Dense(128, activation = 'relu'),
tf.keras.layers.Dense(128, activation = 'relu'),
tf.keras.layers.Dense(64, activation = 'relu'),
tf.keras.layers.Dense(4, activation = 'softmax')
])
model_fm.compile(loss='categorical_crossentropy', optimizer='Adam', metrics=['accuracy'])
model_fm.fit(x_train, y_train, batch_size=256, verbose=1, epochs=60,validation_data=(x_val, y_val), callbacks = [earlystopping, reduce_lr])更早的进展
纪元1/60612/612==- 170s 275ms/步长损失: 0.9359 -精度: 0.5621 - val_loss: 0.7793 - val_accuracy: 0.6299
纪元2/60612/612==- 168s 274ms/步长损失: 0.5998 -精度: 0.7369 - val_loss: 0.4597 - val_accuracy: 0.8002
纪元3/60612/612==- 173s 284ms/步长损失: 0.4464 -精度: 0.8078 - val_loss: 0.3138 - val_accuracy: 0.8693
纪元4/60612/612==- 174s 284ms/步长损失: 0.3427 -精度: 0.8578 - val_loss: 0.2393 - val_accuracy: 0.9037
重新启动运行时后:
纪元1/60409/409==- 112s 273ms/步长损失: 1.3865 -精度: 0.2493 - val_loss: 1.3862 - val_accuracy: 0.2594
纪元2/60409/409==- 111s 271ms/步长损失: 1.3863 -精度: 0.2501 - val_loss: 1.3864 - val_accuracy: 0.2435
附注:对于后一种情况,忽略用于训练的样本数量的变化。该模型对整个数据集显示了类似的结果(准确率为25%)。我本以为使用较少数量的样本可能会缓解这种情况,但它并没有。非常感谢您的帮助。
编辑1:问题再次出现,这一次一个模型显示了99%的测试准确率,但当我将相同的模型加载到单独的笔记本中绘制一些图表时,准确率下降到33%,猜猜发生了什么,类的数量是3。
发布于 2021-11-03 01:21:20
我假设它是因为第一个密集层非常大(16M个参数,占参数总数的99% ),因此你的模型对初始化非常敏感,有时很难训练。
发布于 2021-11-03 02:38:45
您在架构中使用了多个密集层,当您展平最后一层时,将创建一个68k值的数组,然后将每个值作为输入传递给密集层中的256个神经元。相反,你可以做的是在中间使用间隙层,然后变平,然后只有一个致密层(4个神经元)或2个致密层(第一个致密层8个神经元,第二个4个神经元)
https://stackoverflow.com/questions/69818410
复制相似问题