首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Tensorflow角的拟合精度和损失都急剧增加。

Tensorflow角的拟合精度和损失都急剧增加。
EN

Data Science用户
提问于 2020-05-24 02:41:13
回答 2查看 619关注 0票数 1

ubuntu - 20.04

tensorflow 2.2

使用的数据集= MNIST

我正在测试tensorflow,我注意到验证sparse_categorical_accuracy (准确性)和验证SparseCategoricalCrossentropy (损失)都在增加,这对我来说是没有意义的。我认为验证损失应该是下降的,验证的准确性随着培训的进展而增加。或者,在过度安装的情况下,验证损失增加,验证精度下降。但是,验证损失和验证的准确性都随着培训的进展而增加。然而,训练进度是按预期进行的,即训练损失下降,训练精度上升。

下面是代码和输出:

代码语言:javascript
运行
AI代码解释
复制
#testing without preprocess monsoon
import tensorflow as tf
from tensorflow import keras as k
from tensorflow.keras import layers as l
import tensorflow_addons as tfa

mnist = tf.keras.datasets.mnist
(x_t,y_t),(x_te,y_te) = mnist.load_data()
x_t = x_t.reshape(60000,-1)
x_te = x_te.reshape(10000,-1)

d_x_t = tf.data.Dataset.from_tensor_slices(x_t)
d_y_t = tf.data.Dataset.from_tensor_slices(y_t)
dataset = tf.data.Dataset.zip((d_x_t,d_y_t)).shuffle(1000).batch(32)

d_x_te = tf.data.Dataset.from_tensor_slices(x_te)
d_y_te = tf.data.Dataset.from_tensor_slices(y_te)
dataset_test = tf.data.Dataset.zip((d_x_te,d_y_te)).shuffle(1000,seed=42).batch(32)

inp = k.Input((784,))
x = l.BatchNormalization()(inp)
x1 = l.Dense(1024,activation='relu',name='dense_1')(x)
x1=l.Dropout(0.5)(x1)
x1 = l.BatchNormalization()(x1)
x2 = l.Dense(512,activation='relu',name='dense_2')(x1)
x3 = l.Dense(512,activation='relu',name='dense_3')(x)
x = x3+x2

x=l.Dropout(0.5)(x)
x = l.BatchNormalization()(x)
x = l.Dense(10,activation='relu',name='dense_4')(x)
predictions = l.Dense(10,activation=None,name='preds')(x)
model = k.Model(inputs=inp,outputs=predictions)

opt=tfa.optimizers.MovingAverage(
    k.optimizers.Adam(),
    True,
    0.99,
    None,
    'MovingAverage',
    clipnorm=5
)

model.compile(optimizer=opt,
              loss=k.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['sparse_categorical_accuracy'])
print('# Fit model on training data')
history = model.fit(dataset,
                    epochs=30,
                    steps_per_epoch=1875,
                    validation_data = dataset_test,
                    validation_steps = 313)

print('\nhistory dict:', history.history)
model.evaluate(dataset_test,batch_size=32,steps=331)

我得到的学习进化是:

代码语言:javascript
运行
AI代码解释
复制
# Fit model on training data
Epoch 1/30
WARNING:tensorflow:From /home/nitin/anaconda3/envs/tensorflow/lib/python3.7/site-packages/tensorflow/python/ops/resource_variable_ops.py:1817: calling BaseResourceVariable.__init__ (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.
Instructions for updating:
If using Keras pass *_constraint arguments to layers.
1875/1875 [==============================] - 49s 26ms/step - loss: 0.3614 - sparse_categorical_accuracy: 0.8913 - val_loss: 0.3355 - val_sparse_categorical_accuracy: 0.9548
Epoch 2/30
1875/1875 [==============================] - 49s 26ms/step - loss: 0.1899 - sparse_categorical_accuracy: 0.9427 - val_loss: 1.2028 - val_sparse_categorical_accuracy: 0.9641
Epoch 3/30
1875/1875 [==============================] - 51s 27ms/step - loss: 0.1546 - sparse_categorical_accuracy: 0.9521 - val_loss: 1.6385 - val_sparse_categorical_accuracy: 0.9673
Epoch 4/30
1875/1875 [==============================] - 38s 20ms/step - loss: 0.1357 - sparse_categorical_accuracy: 0.9585 - val_loss: 2.8285 - val_sparse_categorical_accuracy: 0.9697
Epoch 5/30
1875/1875 [==============================] - 38s 20ms/step - loss: 0.1253 - sparse_categorical_accuracy: 0.9608 - val_loss: 3.8489 - val_sparse_categorical_accuracy: 0.9697
Epoch 6/30
1875/1875 [==============================] - 29s 16ms/step - loss: 0.1149 - sparse_categorical_accuracy: 0.9646 - val_loss: 2.1872 - val_sparse_categorical_accuracy: 0.9699
Epoch 7/30
1875/1875 [==============================] - 29s 16ms/step - loss: 0.1094 - sparse_categorical_accuracy: 0.9646 - val_loss: 2.9429 - val_sparse_categorical_accuracy: 0.9695
Epoch 8/30
1875/1875 [==============================] - 29s 16ms/step - loss: 0.1066 - sparse_categorical_accuracy: 0.9667 - val_loss: 5.6166 - val_sparse_categorical_accuracy: 0.9710
Epoch 9/30
1875/1875 [==============================] - 30s 16ms/step - loss: 0.0991 - sparse_categorical_accuracy: 0.9688 - val_loss: 3.9547 - val_sparse_categorical_accuracy: 0.9710
Epoch 10/30
1875/1875 [==============================] - 29s 16ms/step - loss: 0.0948 - sparse_categorical_accuracy: 0.9701 - val_loss: 4.8149 - val_sparse_categorical_accuracy: 0.9713
Epoch 11/30
1875/1875 [==============================] - 29s 16ms/step - loss: 0.0850 - sparse_categorical_accuracy: 0.9727 - val_loss: 7.4974 - val_sparse_categorical_accuracy: 0.9712
Epoch 12/30
1875/1875 [==============================] - 29s 16ms/step - loss: 0.0879 - sparse_categorical_accuracy: 0.9719 - val_loss: 4.3669 - val_sparse_categorical_accuracy: 0.9714
Epoch 13/30
1875/1875 [==============================] - 30s 16ms/step - loss: 0.0817 - sparse_categorical_accuracy: 0.9743 - val_loss: 9.2499 - val_sparse_categorical_accuracy: 0.9725
Epoch 14/30
1875/1875 [==============================] - 30s 16ms/step - loss: 0.0805 - sparse_categorical_accuracy: 0.9737 - val_loss: 7.5436 - val_sparse_categorical_accuracy: 0.9716
Epoch 15/30
1875/1875 [==============================] - 30s 16ms/step - loss: 0.0798 - sparse_categorical_accuracy: 0.9751 - val_loss: 14.2331 - val_sparse_categorical_accuracy: 0.9712
Epoch 16/30
1875/1875 [==============================] - 29s 16ms/step - loss: 0.0745 - sparse_categorical_accuracy: 0.9757 - val_loss: 7.9517 - val_sparse_categorical_accuracy: 0.9715
Epoch 17/30
1875/1875 [==============================] - 30s 16ms/step - loss: 0.0745 - sparse_categorical_accuracy: 0.9761 - val_loss: 7.9719 - val_sparse_categorical_accuracy: 0.9702
Epoch 18/30
1875/1875 [==============================] - 30s 16ms/step - loss: 0.0741 - sparse_categorical_accuracy: 0.9763 - val_loss: 13.8696 - val_sparse_categorical_accuracy: 0.9665
Epoch 19/30
1875/1875 [==============================] - 30s 16ms/step - loss: 0.0728 - sparse_categorical_accuracy: 0.9760 - val_loss: 20.2949 - val_sparse_categorical_accuracy: 0.9688
Epoch 20/30
1875/1875 [==============================] - 45s 24ms/step - loss: 0.0699 - sparse_categorical_accuracy: 0.9775 - val_loss: 8.8696 - val_sparse_categorical_accuracy: 0.9713
Epoch 21/30
1875/1875 [==============================] - 29s 16ms/step - loss: 0.0699 - sparse_categorical_accuracy: 0.9777 - val_loss: 12.9682 - val_sparse_categorical_accuracy: 0.9723
Epoch 22/30
1875/1875 [==============================] - 30s 16ms/step - loss: 0.0674 - sparse_categorical_accuracy: 0.9781 - val_loss: 61.1677 - val_sparse_categorical_accuracy: 0.9692
Epoch 23/30
1875/1875 [==============================] - 30s 16ms/step - loss: 0.0651 - sparse_categorical_accuracy: 0.9798 - val_loss: 21.3270 - val_sparse_categorical_accuracy: 0.9697
Epoch 24/30
1875/1875 [==============================] - 31s 16ms/step - loss: 0.0624 - sparse_categorical_accuracy: 0.9800 - val_loss: 62.2778 - val_sparse_categorical_accuracy: 0.9685
Epoch 25/30
1875/1875 [==============================] - 30s 16ms/step - loss: 0.0665 - sparse_categorical_accuracy: 0.9792 - val_loss: 24.9327 - val_sparse_categorical_accuracy: 0.9687
Epoch 26/30
1875/1875 [==============================] - 46s 24ms/step - loss: 0.0605 - sparse_categorical_accuracy: 0.9805 - val_loss: 42.0141 - val_sparse_categorical_accuracy: 0.9700
Epoch 27/30
1875/1875 [==============================] - 29s 16ms/step - loss: 0.0601 - sparse_categorical_accuracy: 0.9806 - val_loss: 54.8586 - val_sparse_categorical_accuracy: 0.9695
Epoch 28/30
1875/1875 [==============================] - 30s 16ms/step - loss: 0.0583 - sparse_categorical_accuracy: 0.9811 - val_loss: 25.3613 - val_sparse_categorical_accuracy: 0.9680
Epoch 29/30
1875/1875 [==============================] - 29s 16ms/step - loss: 0.0576 - sparse_categorical_accuracy: 0.9811 - val_loss: 23.2299 - val_sparse_categorical_accuracy: 0.9710
Epoch 30/30
1875/1875 [==============================] - 30s 16ms/step - loss: 0.0566 - sparse_categorical_accuracy: 0.9817 - val_loss: 16.5671 - val_sparse_categorical_accuracy: 0.9728

history dict: {'loss': [0.36135926842689514, 0.1898646354675293, 0.15456895530223846, 0.13569727540016174, 0.12525275349617004, 0.1148592159152031, 0.10943067818880081, 0.1066298857331276, 0.09912335127592087, 0.09476170688867569, 0.08501157909631729, 0.0879492461681366, 0.08170024305582047, 0.08047273010015488, 0.07976552098989487, 0.07453753799200058, 0.07450901716947556, 0.07413797080516815, 0.07278618961572647, 0.0698995441198349, 0.06988336145877838, 0.06740442663431168, 0.06507138162851334, 0.06242847815155983, 0.0665266141295433, 0.06050613150000572, 0.06005210056900978, 0.05830719694495201, 0.05763527378439903, 0.05664650723338127], 'sparse_categorical_accuracy': [0.8913000226020813, 0.9427499771118164, 0.9521499872207642, 0.9585333466529846, 0.9607999920845032, 0.9645500183105469, 0.9645666480064392, 0.9666833281517029, 0.9687666893005371, 0.9701166749000549, 0.9726999998092651, 0.9719499945640564, 0.9742666482925415, 0.9736999869346619, 0.9750999808311462, 0.9757000207901001, 0.9760833382606506, 0.9763166904449463, 0.9759833216667175, 0.977483332157135, 0.9777166843414307, 0.9780833125114441, 0.9798333048820496, 0.9800000190734863, 0.9792333245277405, 0.9805499911308289, 0.9805999994277954, 0.9810666441917419, 0.9810666441917419, 0.9816833138465881], 'val_loss': [0.33551061153411865, 1.2028071880340576, 1.6384732723236084, 2.828489065170288, 3.8488738536834717, 2.187160015106201, 2.9428975582122803, 5.6166462898254395, 3.954725503921509, 4.814915657043457, 7.4974141120910645, 4.366909503936768, 9.24986457824707, 7.543578147888184, 14.233136177062988, 7.951717853546143, 7.971870422363281, 13.869564056396484, 20.29490089416504, 8.869643211364746, 12.968180656433105, 61.167701721191406, 21.327049255371094, 62.27778625488281, 24.932708740234375, 42.01411437988281, 54.85857009887695, 25.361297607421875, 23.229896545410156, 16.56712532043457], 'val_sparse_categorical_accuracy': [0.954800009727478, 0.9641000032424927, 0.9672999978065491, 0.9696999788284302, 0.9696999788284302, 0.9699000120162964, 0.9695000052452087, 0.9710000157356262, 0.9710000157356262, 0.9713000059127808, 0.9711999893188477, 0.9714000225067139, 0.9725000262260437, 0.9715999960899353, 0.9711999893188477, 0.9714999794960022, 0.9702000021934509, 0.9664999842643738, 0.9688000082969666, 0.9713000059127808, 0.9722999930381775, 0.9692000150680542, 0.9696999788284302, 0.968500018119812, 0.9686999917030334, 0.9700000286102295, 0.9695000052452087, 0.9679999947547913, 0.9710000157356262, 0.9728000164031982]}
302/331 [==========================>...] - ETA: 0s - loss: 17.1192 - sparse_categorical_accuracy: 0.9725WARNING:tensorflow:Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches (in this case, 331 batches). You may need to use the repeat() function when building your dataset.
313/331 [===========================>..] - 1s 3ms/step - loss: 16.5671 - sparse_categorical_accuracy: 0.9728
[16.567113876342773, 0.9728000164031982]
```
代码语言:javascript
运行
复制
EN

回答 2

Data Science用户

发布于 2020-05-24 04:58:39

通常情况下,这是由于学习率太高,它通过损失函数的最小,并开始超调。当然,我不能肯定这就是原因,但这是我最好的猜测。

尝试简化优化器,单独使用Adam()优化器(没有移动平均值),并设置相当小的学习速率,比如0.001甚至0.0001。让我们看看进展如何,让我们知道。

票数 0
EN

Data Science用户

发布于 2020-05-24 05:31:03

你在这里太适应了。对于简单的MNIST数据集来说,这是一个相当复杂的网络。分离MNIST类是相当容易的,所以即使你的网络在验证集上表现得越来越差--它越来越不确定正确的答案,更多地相信错误的答案--最可能的类仍然几乎总是正确的。准确性是最大概率的函数,损失是它们的函数。我会在这里使用val_loss来决定提前停止训练。

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

https://datascience.stackexchange.com/questions/74742

复制
相关文章
解放双手:如何在本地调试远程服务器上的Node代码
谈到node断点调试,目前主要有三种方式,通过node内置调试工具、通过IDE(如vscode)、通过node-inspector,三者本质上差不多。本文着重点在于介绍 如何在本地通过node-inspector 调试远程服务器上的node代码。
IMWeb前端团队
2019/12/04
1.8K0
解放双手:如何在本地调试远程服务器上的Node代码
解放双手:如何在本地调试远程服务器上的Node代码
本文主要介绍了如何使用Node.js内置的调试器,包括如何启动调试器、设置断点、查看变量、单步执行、进入函数、查看调用栈、设置监视点、查看调用堆栈、调试异步代码、使用console.log、使用source-map-support、使用debugger语法进行调试等。同时还介绍了如何通过IDE或者命令行进行调试,以及调试过程中常见的问题和解决方法。
IMWeb前端团队
2017/12/29
2.8K0
解放双手:如何在本地调试远程服务器上的Node代码
解放双手:如何在本地调试远程服务器上的Node代码
写在前面 谈到node断点调试,目前主要有三种方式,通过node内置调试工具、通过IDE(如vscode)、通过node-inspector,三者本质上差不多。本文着重点在于介绍 如何在本地通过node-inspector 调试远程服务器上的node代码。 在进入主题之前,首先会对三种调试方式进行入门讲解,方便新手理解后面的内容。至于老司机们,可以直接跳到主题去。 方式一:内置debug功能 进入调试模式(在第1行断点) node debug app.js 进入调试模式(在第n行断点) 比如要在第3行断点
用户1097444
2022/06/29
2.4K0
解放双手:如何在本地调试远程服务器上的Node代码
如何在腾讯云上启用 PostgreSQL 数据库远程访问?
EarlGrey
2017/06/02
7.4K0
如何在腾讯云上启用 PostgreSQL 数据库远程访问?
在 Windows 系统上启用远程应用
需要一个远程桌面 App 进行演示, 安装 Windows 远程桌面服务太折腾, 需要安装域控制器, 再部署一整套的远程服务, 太折腾了, 如果只是演示的话, 没必要那么折腾。
beginor
2020/08/07
3.4K0
如何在远程服务器上运行Jupyter Notebooks?
Jupyter Notebook是许多数据科学家工具箱中的一个主要工具。作为一个工具,Jupyter Notebook可以通过交互方式简化数据分析、模型建模和实验,从而缩短从编码到查看结果的反馈循环,从而提高工作效率。
AiTechYun
2019/07/12
4K0
如何在远程服务器上运行Jupyter Notebooks?
如何在Electra越狱的设备上使用LLDB调试应用程序
我试图在google搜索,有关使用Electra越狱的iOS设备上调试AppStore应用程序的简要说明。但令我失望的是,竟然没有找到任何有用的资料。因此我决定写一篇相关的指南,经过我的测试它非常的适用于我,但我无法确定它是否同样适用于你。我在以下设备进行了测试:
FB客服
2018/07/30
2.3K0
如何在Electra越狱的设备上使用LLDB调试应用程序
如何在 CentOS 上启用EPEL存储库
EPEL(Extra Packages for Enterprise Linux)存储库提供了标准 Red Hat 和 CentOS 存储库中未包含的其他软件包。EPEL 存储库的创建是因为 Fedora 贡献者希望使用他们在 Red Hat Enterprise Linux(RHEL)及其衍生产品(如CentOS,Oracle Linux和Scientific Linux)上维护的软件包。
用户8705033
2021/06/08
1.9K0
如何在RHEL/CentOS上启用Apache Userdir模块
User Directory或Userdir是一个Apache模块,它允许使用http://example.com/~user/语法通过Apache Web服务器检索特定于用户的目录。
星哥玩云
2022/07/27
4660
如何在RHEL/CentOS上启用Apache Userdir模块
如何在 Debian服务器 上启用双因子身份验证
双因子身份验证就是指,需要两种身份验证才能完成账号有效性的验证,可以是密码、SSH 密钥,也可以是第三方服务,比如 Google Authenticator。这意味着单个验证方式的缺陷,不会影响账号的安全。本文我们将介绍如何在 Debian 服务器上启用双因子验证。
Debian中国
2018/12/21
1.8K0
通过 Mac 远程调试 iPhone/iPad 上的网页
我们知道在 Mac/PC 上的浏览器都有 Web 检查器这类的工具(如最著名的 Firebug)对前端开发进行调试,而在 iPhone/iPad 由于限于屏幕的大小和触摸屏的使用习惯,直接对网页调试非常不方便,所以一直没有 Web 检查器这一类工具,但是 iOS 6 的发布解决了这个问题。
Denis
2023/04/14
1.8K0
通过 Mac 远程调试 iPhone/iPad 上的网页
如何在Nginx上启用SSL和TLS 1.3
现在是时候从的'HTTP迁移到HTTPS了。 由于最新的浏览器迭代,尤其适用于网站不安全的情况。 当您将SSL与TLS的一两个结合(请参阅如何在Ubuntu Server 18.04上构建具有TLS支持的Nginx)时,您的站点将获得更高的安全性和性能。
星哥玩云
2022/07/24
4.3K0
如何在Nginx上启用SSL和TLS 1.3
怎样在服务器上启用 HTTPS [每日前端夜话(0x1A)]
此部分使用 openssl 命令行程序(大部分 Linux、BSD 和 Mac OS X 系统均附带此程序)来生成私钥/公钥和 CSR。
疯狂的技术宅
2019/03/27
4.3K0
怎样在服务器上启用 HTTPS [每日前端夜话(0x1A)]
如何在移动设备上使用堡垒机
堡垒机目前已经成为通用的安全设备之一,很多公司运维人员登录服务器的时候都需要从堡垒机上进行认证授权,然后登录服务器进行操作。近年来随着平板设备的普及,很多时候技术人员有从移动设备上登录堡垒机的需求,本文就是以中远麒麟堡垒机为例,说明如何通过安卓或IOS设备访问堡垒机进行运维操作。
用户2169016
2022/02/04
2.2K0
如何在移动设备上使用堡垒机
如何在 Ubuntu 18.04 上安装 Xrdp 服务器(远程桌面)
Xrdp 是一个微软远程桌面协议(RDP)的开源实现,它允许你通过图形界面控制远程系统。通过 RDP,你可以登录远程机器,并且创建一个真实的桌面会话,就像你登录本地机器一样。
雪梦科技
2020/05/11
14.3K0
如何在 Ubuntu 18.04 上安装 Xrdp 服务器(远程桌面)
如何在 Linux 上复制文件/文件夹到远程服务器?
从一个服务器复制文件到另一个服务器,或者从本地到远程复制是 Linux 管理员的日常任务之一。
星哥玩云
2022/07/26
15.7K0
如何在Ubuntu 20.04 上安装 Xrdp 服务器(远程桌面)
本文最先发布在: https://www.itcoder.tech/posts/how-to-install-xrdp-on-ubuntu-20-04/
雪梦科技
2020/05/25
10.2K6
如何在Ubuntu 20.04 上安装 Xrdp 服务器(远程桌面)
如何在CentOS / RHEL 7上启用IPv6
默认情况下,在RHEL / CenOS 7系统上启用IPv6。因此,如果故意在系统上禁用IPv6,则可以通过以下任一方法重新启用它。
sunsky
2020/08/20
6.3K0
如何在Ubuntu 18.04上启用没有Shell访问权限的SFTP
SFTP代表S SH F ile T ransfer P rotocol。顾名思义,这是一种使用加密SSH连接在计算机之间传输文件的安全方法。尽管名称如此,但它与FTP(F ile T ransfer P rotocol)完全不同,尽管现代FTP客户端广泛支持它。
一步
2018/09/28
3.9K0
如何在Cisco设备上停止Traceroute或Ping?
在深入讨论如何停止Traceroute或Ping之前,让我们先了解一下这两个工具的基本原理。
网络技术联盟站
2023/09/06
7450
如何在Cisco设备上停止Traceroute或Ping?

相似问题

如何在远程服务器上调试CUDA代码?

10

如何在流星上远程调试服务器代码?

13

如何在Android设备上启用Chrome调试?

12

Linux服务器上CUDA程序的远程调试与评测

35

在设备上远程调试android应用

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档