当前位置: 首页 > 知识库问答 >
问题:

TensorFlow:损耗降低,但精度稳定

罗光华
2023-03-14

我的团队正在Tensorflow中训练一个CNN对损坏/可接受部件进行二进制分类。我们通过修改cifar10示例代码来创建我们的代码。在我以前的神经网络经验中,我总是训练到损失非常接近于0(远低于1)。然而,我们现在在训练期间(在一个单独的GPU上)用一个验证集来评估我们的模型,看起来精度在大约6.7K步数后停止增长,而损失在超过40K步数后仍在稳步下降。这是因为过装吗?一旦损失非常接近于零,我们应该期待看到精度的另一个高峰吗?当前最大精度不可接受。我们是不是应该干掉它继续调?你推荐什么?这里是我们修改的代码和训练过程的图表。

https://gist.github.com/justineyster/6226535A8EE3F567E759C2FF2AE3776B

精度和丢失图像

共有1个答案

秋煌
2023-03-14

二进制交叉熵损失的减少并不意味着精度的提高。在时间步骤1、2、3和分类阈值0.5考虑标签1,预测0.2、0.4和0.6。时间步骤1和2将减少损耗,但不增加精度。

通过过度拟合训练数据来确保您的模型有足够的容量。如果模型对训练数据过拟合,则通过使用dropout、L1和L2正则化以及数据增强等正则化技术来避免过拟合。

最后,确认您的验证数据和训练数据来自相同的分布。

 类似资料:
  • 我在Pytorch中用LSTM-线性模块构建了一个分类问题(10个类)的模型。我正在训练模型,对于每个时代,我在训练集中输出损失和准确性。产出如下: 纪元:0开始 损失:2.301875352859497 会计科目:0.1138888889 时代:1开始<损失:2.2759320735931396 会计科目:0.29 时代:2开始<损失:2.2510263919830322 会计科目:0.4872

  • 我有一个只有完全连接/密集层的深度网络,形状为128-256-512-1024-1024所有层使用激活,没有,最后一层使用激活。 在第20次训练后,验证/测试损失开始逆转并上升,但测试精度也在继续提高。这怎么说得通?如果显示了新的数据,测试的准确性是否准确,或者是否存在某种假阳性? 我这样编译模型:

  • 每当设备断开连接时,我确保对BluetoothGatt对象调用close()并将其设置为null。有什么见解吗? 编辑: 日志转储:对于这些日志,我将我的电话根目录化,并提高了/etc/bluetooth/bt_stack.conf中相关项的跟踪级别 成功连接-重新启动手机并安装应用程序后的第一次尝试。我能够连接,发现所有的服务/特性,并读/写。

  • 我想创建一个预测年龄和性别的模型,并将其集成到Android应用程序中。 我在Ubuntu 16上使用Python 3.6,Tensorflow 1.13.1和Keras 2.2.4。 首先,我用IMDB数据集训练不同的模型:keras的Mobilenet V1和V2,以及我自己编写的VGG。对于这两个MobileNet,我使用imagenet权重来初始化模型。 准确率相当高,性别的准确率超过90

  • 问题陈述: 编写一个方法whatTime,它采用int,seconds,表示从某一天午夜开始的秒数,并返回一个格式为“:”的字符串。此处,表示自午夜以来的完整小时数,表示自上一完整小时结束以来的完整分钟数,以及自上一完整分钟结束以来的秒数。和中的每一个都应该是整数,没有额外的前导0。因此,如果秒为0,则应返回“0:0:0”,而如果秒为3661,则应返回“1:1:1” 我的算法: 以下是我的算法对输

  • 问题内容: 我有一个关于精度损失的问题 我的任务是将数字打印为字符串 例如0.2 * 7 = 1.4000000000000001; 0.0000014 / 10 = 1.3999999999999998E-7 如何解决这个问题? UPD :主要问题是 字符串 输出格式。我不担心丢失约0.00000001的值。现在,我将其解析为String.format(“%f”,value),但我认为这不是一个