首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tensorflow -相同模型的第一个时期的损失停滞不前,在较早的运行时显示出更好的结果

Tensorflow -相同模型的第一个时期的损失停滞不前,在较早的运行时显示出更好的结果
EN

Stack Overflow用户
提问于 2021-11-03 00:35:52
回答 2查看 50关注 0票数 0

我在Colab上为我的光通信项目训练一个模型,然后发生了一件奇怪的事情。我首先训练的模型显示了接近99%的训练和97%的验证准确率,但运行时在晚上的某个时候到期了。现在,对于相同的模型,我尝试在重新连接到运行时后重新训练。但现在,准确率从第一个时期起保持不变,为25%。令人惊讶的是,有4个类别,我的模型将它们都分类为0.25。我不确定是什么导致了这个错误,因为在几次重新启动后,模型显示出与原始性能相似的性能,但现在它又回到了25%的准确率。请参考图片和下面的型号规格。

Model Summary

代码语言:javascript
复制
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。

EN

回答 2

Stack Overflow用户

发布于 2021-11-03 01:21:20

我假设它是因为第一个密集层非常大(16M个参数,占参数总数的99% ),因此你的模型对初始化非常敏感,有时很难训练。

票数 1
EN

Stack Overflow用户

发布于 2021-11-03 02:38:45

您在架构中使用了多个密集层,当您展平最后一层时,将创建一个68k值的数组,然后将每个值作为输入传递给密集层中的256个神经元。相反,你可以做的是在中间使用间隙层,然后变平,然后只有一个致密层(4个神经元)或2个致密层(第一个致密层8个神经元,第二个4个神经元)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69818410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档