Keras:模型准确率在达到 99% 准确率后下降,损失为 0.01

2024-04-19

我正在 keras 中使用改编的 LeNet 模型来进行二元分类。我有大约 250,000 个训练样本,比率为 60/40。我的模型训练得很好。第一个 epoch 的准确率达到 97%,损失为 0.07。 10 个 epoch 后,准确率超过 99%,损失为 0.01。当模型改进时,我使用 CheckPointer 来保存模型。

在第 11 个 epoch 左右,准确率下降到 55% 左右,损失约为 6。这怎么可能?是因为模型无法变得更准确并且它试图找到更好的权重但完全失败了吗?

我的模型是 LeNet 模型的改编版:

lenet_model = models.Sequential()
lenet_model.add(Convolution2D(filters=filt_size, kernel_size=(kern_size, kern_size), padding='valid',\
                        input_shape=input_shape))
lenet_model.add(Activation('relu'))
lenet_model.add(BatchNormalization())
lenet_model.add(MaxPooling2D(pool_size=(maxpool_size, maxpool_size)))
lenet_model.add(Convolution2D(filters=64, kernel_size=(kern_size, kern_size), padding='valid'))
lenet_model.add(Activation('relu'))
lenet_model.add(BatchNormalization())
lenet_model.add(MaxPooling2D(pool_size=(maxpool_size, maxpool_size)))
lenet_model.add(Convolution2D(filters=128, kernel_size=(kern_size, kern_size), padding='valid'))
lenet_model.add(Activation('relu'))
lenet_model.add(BatchNormalization())
lenet_model.add(MaxPooling2D(pool_size=(maxpool_size, maxpool_size)))
lenet_model.add(Flatten())
lenet_model.add(Dense(1024, kernel_initializer='uniform'))
lenet_model.add(Activation('relu'))
lenet_model.add(Dense(512, kernel_initializer='uniform'))
lenet_model.add(Activation('relu'))
lenet_model.add(Dropout(0.2))
lenet_model.add(Dense(n_classes, kernel_initializer='uniform'))
lenet_model.add(Activation('softmax'))

lenet_model.compile(loss='binary_crossentropy', optimizer=Adam(), metrics=['accuracy'])

问题在于应用binary_crossentropy损失,而在这种情况下categorical_crossentropy应该应用。另一种方法是离开binary_crossentropy损失但改变输出有dim=1并激活sigmoid。奇怪的行为来自于这样一个事实binary_crossentropy实际上解决了多类二元分类(具有两个类),而您的任务是单类二元分类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Keras:模型准确率在达到 99% 准确率后下降,损失为 0.01 的相关文章

  • Python:我可以修改元组吗?

    我有一个 2 D 元组 实际上我以为 它是一个列表 但错误说它是一个元组 但无论如何 该元组的形式为 浮点数 val prod id 现在我有一个字典 其中包含 key gt prod id 和 value prod name 现在 我想将
  • python列表理解和extend() [重复]

    这个问题在这里已经有答案了 深入学习 Python 2 7 1 但未能理解这一点 几个小时 gt gt gt a 1 2 gt gt gt b 3 4 gt gt gt gt gt gt a extend b 0 gt gt gt a 1
  • 在 Windows 上使用 Python 打开设备句柄

    我正在尝试使用 Giveio sys 驱动程序 该驱动程序需要先打开一个 文件 然后才能访问受保护的内存 我正在查看 WinAVR AVRdude 中的 C 示例 它使用以下语法 define DRIVERNAME giveio HANDL
  • 在 python 中返回 self [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个代表对象的类 我有很多方法可以修改这个对象状态 没有明显的返回或显然没有任何返回 在 C 中 我会将所有这些方法声明为void
  • Python 3:如何更改GDAL中的图像数据?

    我有一个 GeoTIFF 图像 其中包含颜色表和带有 8 位表键的单个栅格带 并且使用 LZW 压缩 我加载该图像gdal Open https gdal org python osgeo gdal module html 我还有一个包含
  • 如何在 PyCharm 中启用 flake8 的自动代码格式化

    我使用 Tox 运行单元测试 并使用 flake8 命令检查代码格式错误 每次我在 PyCharm 中编码时 我都会运行 tox 然后意识到我有一堆烦人的格式错误 我必须返回并手动修复 我希望 PyCharm 自动格式化代码 根据 flak
  • 模拟导入失败

    我该如何制作import pkg失败moduleA py 我可以打补丁pkg如果从中导入某些内容则会失败 否则不会失败 test py import os import moduleA from unittest mock import p
  • 如何在 Python 中重命名文件并保留创建日期

    我知道创建日期不存储在文件系统本身中 但是当我使用时我遇到了问题os rename 它正在更新我正在使用的文件的创建日期 是否可以重命名文件而不更改其原始创建日期 正如都铎所说 你可以使用os stat http docs python o
  • 在 Django 1.9 中使用信号

    在 Django 1 8 中 我能够使用信号执行以下操作 一切顺利 init py from signals import 信号 py receiver pre save sender Comment def process hashtag
  • 让垂直网格线出现在 matplotlib 的线图中

    我想在绘图上同时获得水平和垂直网格线 但默认情况下仅显示水平网格线 我正在使用一个pandas DataFrame从 python 中的 sql 查询生成 x 轴上带有日期的线图 我不知道为什么它们没有出现在日期上 我试图寻找这个问题的答案
  • NumPy 中 exp(-x^2) 的快速傅立叶变换

    I have to calculate numerically the 2nd derivative of a Gaussian function I ve read every question on this topic here bu
  • 来自字典列表列表的 Pandas DataFrame

    我有一个数据结构 它是字典列表的列表 Height 86 Left 1385 Top 215 Width 86 Height 87 Left 865 Top 266 Width 87 Height 103 Left 271 Top 506
  • 如何使用Django模板作为组件?

    我有 5 个模板 index html detail html tag html login html register html and a 基本 html 所有 5 个模板都会扩展基本 html 索引 html 详细信息 html 标签
  • 为什么这个记忆器适用于递归函数?

    我不明白为什么下面的代码是这样的fib以线性而非指数时间运行 def memoize obj Memoization decorator from PythonDecoratorLibrary Ignores kwargs cache ob
  • 如何通过pygit2获取当前签出的Git分支名称?

    这个问题应该与 如何获取Git中当前的分支名称 https stackoverflow com questions 6245570 how to get current branch name in git 获取 git 当前分支 标签名称
  • Mac OS 上的 pybluez 安装错误

    我尝试安装pybluez使用以下命令 pip install pybluez sudo easy install pybluez 但对于这两个命令我最终都会出错 环境 Mac OSX 10 9 1 Python 2 7 点日志 cc fno
  • 将数值和分类数据混合到具有密集层的 keras 序列模型中

    我在 Pandas 数据框中有一个训练集 我将此数据框传递到model fit with df values 以下是有关 df 的一些信息 df values shape 981 5 df values 0 array 163 0 6 83
  • python字符串包含双引号字符

    我的输入字符串由字符组成 包括双引号和单引号 和 B SS JU PQ AD DDSFD ABD E J 但是 当我从文本文件打开上述输入并打印它时 第三行中的双引号 被打印为 xe2 x80 x9d 我的目标是进行简单的字符计数 B 2
  • 如何加速Python循环

    我查看了几个网站上的一些讨论 但没有一个给我解决方案 这段代码运行时间超过5秒 for i in xrange 100000000 pass 我正在研究整数优化问题 我必须使用O n log n 算法编辑 O n 4 算法 其中n代表矩阵的
  • 预提交钩子 git 错误

    我正在尝试在 python 中执行预提交 git hook 以检查文件的行长度是否小于 80 个字符 但是我收到没有此类文件 目录的错误 我在 fedora 上并设置了 usr bin python help 将不胜感激 usr bin e

随机推荐

  • 如何在swift 2中通过短信发送验证码

    我为我的应用程序构建了一个注册表单 我需要通过短信向用户发送验证码才能完成注册过程 我尝试使用 MFMessageComposeViewController 但它打开设备上的对话框短信 以便用户可以看到代码 我还检查了网络上是否有发送短信的
  • Django 中 DateTimeField 的过期逻辑

    我在服务模型中有一个 DateTimeField 定义如下 pub date models DateTimeField default timezone now blank True 我想在我的代码中创建一些过期逻辑 以便超过 2 个月的服
  • 有没有办法在运行时找到 PackageFamilyName?

    有没有办法在运行时找出 PackageFamilyName 如清单中所示 我查看了 Program Files WindowsApps 但找不到相关的字符串 找不到任何 API 可以让我这样做 欢迎任何其他想法 我想你正在寻找的是包 ID
  • Discord.py:wait_for('reaction_add')未按预期工作

    我正在尝试在discord py 上制作一个常见问题解答机器人 到目前为止进展顺利 我想添加一个额外的功能 当机器人检测到常见问题解答时 机器人不会直接发送答案 而是会发送一条提示消息 其中包含两种反应 竖起大拇指和竖起大拇指 具体取决于所
  • 错误:“defaultfloat”不是“std”的成员

    std defaultfloat尽管在 GCC 中似乎没有定义在标准中 http www cplusplus com reference ios defaultfloat 我认为是 27 5 6 4 我将其隔离为这个简单的程序 test c
  • FirebaseInstanceId 不再存在

    我刚刚升级了所有 Firebase 依赖项 但遇到了问题 FirebaseInstanceId不再被认可 我用它来获取令牌 id 如下所示 String tokenId FirebaseInstanceId getInstance getT
  • Mercurial 工作流程是否可以通过未提交的更改进行更新?

    因此 我的网站从 CVS 切换到 Mercurial 我遇到的最大问题是 如果我正在处理一些我不想提交的文件 我只需保存它们 然后我还有其他文件想要推送到服务器 但是如果其他人已经制作了对存储库进行更改 然后我将它们拉下来 它要求我合并或变
  • 如何在flutter中显示base64格式的pdf?

    我有 base64 格式的 pdf 内容 我需要在 flutter 应用程序的容器中显示它 我正在尝试使用 dart 中的图像 pdf 和转换包来完成此操作 但我收到图像类错误 并且我不知道如何显示图像 List
  • Android后台服务判断前台应用程序

    我正在开发一个应用程序 可以监控全天的手机使用情况 为此 我有一个后台服务 该服务在设备启动时启动 并不断轮询以找出当前的前台应用程序是什么 当我单击一个应用程序然后退出并单击另一个应用程序时 以下代码将起作用 现在假设我打开浏览器并转到另
  • 多个进程可以共享一个 CUDA 上下文吗?

    这个问题是 Jason R 的后续问题comment https stackoverflow com questions 29964392 multiple cuda contexts for one device any sense co
  • 使用一个控件将两个 Twitter Bootstrap 轮播链接在一起

    我刚刚学习 javascript 所以请耐心等待 我正在尝试使用相同的控件在引导程序中启动两个轮播 按照目前的设置方式 包含轮播 ID 的 href 标签控制着每个轮播 有人对如何使用相同的控件以最少的修改将两者链接在一起有建议吗 这是 H
  • 如何记录 Java Record 参数?

    应该如何记录Java记录 https openjdk java net jeps 359参数 我指的是最终成为构造函数参数 类字段的参数 I tried param name the name of the animal param age
  • Log4j 2 创建记录器时挂起

    我有这个简单的程序 package myPackage import org apache logging log4j Logger import org apache logging log4j LogManager public cla
  • 如何不使用 Do 符号来书写

    我正在研究可组合的失败 并设法编写了一个具有签名的函数 getPerson IO Maybe Person 其中一个人是 data Person Person String Int deriving Show 它有效 我将其写在 do 符号
  • 为什么Android中的Sleep首先执行,而不是上面的代码?

    为什么首先执行 try 块 我希望颜色先改变 然后它应该休眠 5000 毫秒 我的意思是系统在颜色改变之前休眠 私有 OnClickListener CheckAnswer new OnClickListener public void o
  • ViewModel 是否能在 Activity 保存和恢复中幸存?

    新的实例ViewModel如果按以下方式使用 类可以在配置更改中幸存 mViewModel ViewModelProviders of this get MyViewModel class 然而 除了配置更改之外 当整个应用程序的进程被杀死
  • .htaccess 中的 RewriteRule 在 app.yaml 文件中转换为什么?

    我该如何转换这个 htaccess文件到app yaml file 这里是 htaccess file RewriteEngine On RewriteCond REQUEST FILENAME f RewriteRule public i
  • Java 7 中是否有针对 ImmutableEnumSet 的计划?

    我希望拥有 EnumSet 的所有效率并传递它 而不用担心有人会修改它 您可以使用 Google 集合 Guava 获得不可变的 EnumSet 资源 番石榴主页 http code google com p guava libraries
  • Python 记录类型错误

    你能帮帮我吗 出了什么问题 import logging if name main logging basicConfig format asctime s levelname s module s funcName s message s
  • Keras:模型准确率在达到 99% 准确率后下降,损失为 0.01

    我正在 keras 中使用改编的 LeNet 模型来进行二元分类 我有大约 250 000 个训练样本 比率为 60 40 我的模型训练得很好 第一个 epoch 的准确率达到 97 损失为 0 07 10 个 epoch 后 准确率超过