解决Caffe训练过程中loss不变问题

Caffe 训练时loss等于87.33的原因及解决方法 如题,本文给出了caffe训练时loss为87.33的详细原因分析和解决方法 阅读详情

原文地址:http://blog.youkuaiyun.com/u010911921/article/details/71079367
这段在使用caffe的时候遇到了两个问题都是在训练的过程中loss基本保持常数值,特此记录一下。

1.loss等于87.33不变

loss等于87.33这个问题是在对Inception-V3网络不管是fine-tuning还是train的时候遇到的,无论网络迭代多少次,网络的loss一直保持恒定。

查阅相关资料以后发现是由于loss的最大值由FLT_MIN计算得到,FLT_MIN是 1.17549435e−38F​ 其对应的自然对数正好是-87.3356,这也就对应上了loss保持87.3356了。

这说明softmax在计算的过程中得到了概率值出现了零,由于softmax是用指数函数计算的,指数函数的值都是大于0的,所以应该是计算过程中出现了float溢出的异常,也就是出现了inf,nan等异常值导致softmax输出为0.

当softmax之前的feature值过大时,由于softmax先求指数,会超出float的数据范围,成为inf。inf与其他任何数值的和都是inf,softmax在做除法时任何正常范围的数值除以inf都会变成0.然后求loss就出现了87.3356的情况。

解决办法

由于softmax输入的feature由两部分计算得到:一部分是输入数据,另一部分是各层的权值等组成

  1. 减小初始化权重,以使得softmax的输入feature处于一个比较小的范围

  2. 降低学习率,这样可以减小权重的波动范围

  3. 如果有BN(batch normalization)层,finetune时最好不要冻结BN的参数,否则数据分布不一致时很容易使输出值变得很大(注意将batch_norm_param中的use_global_stats设置为false )。

  4. 观察数据中是否有异常样本或异常label导致数据读取异常

    本文遇到的情况采用降低学习率的方法,learning rate设置为0.01或者原来loss的 1/5 或者 1/10 。

2.loss保持0.69左右

采用VGG-16在做一个二分类问题,所以计算loss时等价与下面的公式:

​

loss=−log(Pk==label)

当p=0.5时,loss正好为0.693147,也就是训练过程中,无论如何调节网络都不收敛。最初的网络配置文件卷积层的参数如下所示:

从VGG-16训练好的模型进行fine-tuning也不发生改变,当在网络中加入初始化参数和decay_mult以后再次训练网络开始收敛。


但是具体是什么原因造成的,暂时还没有找到,难道是初始化参数的问题还是?

参考资料

http://blog.youkuaiyun.com/jkfdqjjy/article/details/52268565?locationNum=14

https://groups.google.com/forum/#!topic/caffe-users/KEgrRlwXz9c

caffe绘制训练过程的loss和accuracy曲线 在caffe的训练过程中,大家难免想图形化自己的训练数据,以便更好的展示结果。如果自己写代码记录训练过程的数据,那就太麻烦了,caffe中其实已经自带了这样的小工具 caffe-master/tools/extra/parse_log.sh  和 caffe-master/tools/extra/plot_training_log.py.example ,使用方法如下: 1.记录训练日志 在训 阅读详情

相关推荐

caffe绘制训练过程中的accuracy、loss曲线

训练模型并保存日志文件        首先建立一个训练数据的脚本文件train.sh,其内容如下,其中,2>&1   | tee examples/mnist/mnist_train_log.log 是log日志文件的保存目录。 #!/usr/bin/env sh set -e TOOLS=./build/tools $TOOLS/caffe train --solv

竹馨shine的专栏 8664

关于训练时Loss值不变的情况分析

今天在搭建简单模型训练花数据的时候发现loss,始终为一个数。 loss:实际输出值和标签值之间的误差距离。在分类任务中,如何评判输出和期望之间的接近? 交叉熵:刻画了两个概率分布之间的距离。是分类问题中应用比较广的一种损失函数。 反向更新权重:有了损失函数,知道了实际输出和真实值之间的距离,用梯度求导更新权重。 学习率:公式中的a就是学习率,表示的是每次权重更新的大小。 学习率设置...

ZHANGWEI199212040的博客 1万+

Python小波变换实战:用PyCWT分析气候数据(附完整代码)

本文详细介绍了如何使用Python中的PyCWT库进行小波变换分析,特别针对气候数据(如NINO3海温异常数据)的多尺度周期性特征提取。通过完整的代码示例,从数据预处理、小波参数配置到结果可视化,逐步指导读者掌握小波变换在气候研究中的实际应用。

weixin_29088655的博客 281

pytorch训练网络时的iter和epoch

Iter------一次迭代,是指一个min_batch的一次forward+backward Epoch------迭代完所有的训练数据(1次),称为一个epoch # 训练网络 # 迭代epoch for epoch in range(20): running_loss = 0.0 for i, data in enumerate(trainloader, 0): # get the input inputs, labels = data # zeros the paramster gradients

qq_43232545的博客 1万+

【学习笔记-QGIS】 QGIS从零快速上手

安装文章参考:https://zhuanlan.zhihu.com/p/370633306。

Xcong_Zhu的博客 1万+

西门子S7-200 SMART 实战解析:滑动平均值滤波算法在模拟量信号处理中的应用

本文详细解析了在西门子S7-200 SMART PLC中实现滑动平均值滤波算法的实战应用。通过处理模拟量信号如温度、压力等,该算法有效抑制信号干扰,提升系统稳定性。文章涵盖算法原理、程序框架、信号采集及调试优化,为工业自动化工程师提供实用指南。

gitlab7runner的博客 1152

深度学习之Loss不下降原因分析篇

Train & Test Loss train loss 不断下降,test loss不断下降,说明网络仍在学习; train loss 不断下降,test loss趋于不变,说明网络过拟合; train loss 趋于不变,test loss不断下降,说明数据集100%有问题; train loss 趋于不变,test loss趋于不变,说明学习遇到瓶颈,需要减小学习率或批量数目; t...

weixin_42028608的博客 6966

LT8711/LT8712 Type-C转HDMI设计方案|替代LT8711/LT8712芯片|GSV2201可完全替代兼容LT8711/LT8712

LT8711UX是一款高性能C/DP1.2型至HDMI2.0转换器,用于将USB Type-C源或DP1.2源连接到HDMI2.0接收器。该LT8711UX集成了一个DP1.2兼容的接收器,和一个HDMI2.0兼容的发射器。此外,还包括两个CC控制器,用于CC通信,以实现DP Alt模式和功率传输功能,一个用于上游Type-C端口和另一个用于下游端口。

weixin_63518914的博客 1639

FCN-for-semantic-image-segmentation 训练过程的一些坑记录

(1)首先,出现layer registry error,提示convolutional layer已经注册过了。网上大多的问题是提示unknown layer,并非already registed,大概有两种针对前一种的解决方法:1.链接的caffe静态库和动态库的区别,应该链接动态库?2.caffe的注册机制的问题,添加头文件,外部强制注册?感觉不太像是我这个问题的答案。查了谷歌,好像是我装了

eouaq448466的博客 458

绝缘体上硅(SOI) vs 传统硅片:5个关键性能对比及适用场景分析

本文深入对比了绝缘体上硅(SOI)与传统硅片在功耗、速度、隔离性等5个关键性能维度的差异,并分析了各自适用场景。SOI技术凭借其独特的埋氧层结构,在低功耗、高频应用和极端环境下展现出显著优势,特别适合移动设备、汽车电子和航天应用。

weixin_30335575的博客 554

增程式永磁电机发电系统电压环二自由度控制器设计

本论文主要研究增程式永磁电机发电系统的电压环二自由度控制器设计。该系统采用二自由度控制策略,通过精确调节电压环和电流环,显著提高系统的动态响应性能和稳态稳定性。基于SVPWM(空间矢量脉宽调制)技术,本研究设计的电压环控制器能够在负载突变和外部扰动的情况下,快速恢复并保持电压稳定,从而满足增程式永磁电机发电系统对电压精度和稳定性的高要求。仿真分析表明,所设计的控制器在不同工况下展现出良好的电压稳定性、较短的响应时间和较低的稳态误差,能够有效抑制电压波动并提高系统的鲁棒性。实验结果表明,控制器在维持高效能和高

weixin_44553616的博客 897

用自己的数据集做resnet-50的测试

这是我参考的博客 我的数据集是一个图片9分类的数据集,文本标签的形式为路径+空格+标签,制作的标签方法参考我上一篇博客 做一些问题补充如下: 1、因为我做的图片数据集稳128*128,所以把prototxt最后pool5里的kernelsize改小了一些,然后9分类所以把最后的numout改成了9 2、文本标签我做的是1从9出现了错误,我把它改成了0-8后解决 3、出现loss一直不变的...

1万+

7、刚度矩阵与弹簧元素:有限元分析的核心

本文深入探讨了有限元分析中的核心概念——刚度矩阵与弹簧元素。详细介绍了刚度矩阵的定义、构建方法及其对称性、正定性和稀疏性等性质,同时解析了弹簧和阻尼器元素的特性及其在模拟复杂系统中的应用,如液压缸、减震器等。通过结合刚度矩阵与弹簧元素,可以提高结构模型的精度并模拟复杂的工程系统。文章还讨论了优化策略、验证流程、误差分析及实际应用案例,展示了这些技术在桥梁分析、汽车悬挂系统等领域的重要作用,并展望了其在未来新材料、智能结构和数字孪生技术中的发展潜力。

nice1的博客 235

PyTorch绘制训练过程的accuracy和loss曲线

原文链接:https://blog.youkuaiyun.com/tequilaro/article/details/81841748?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogC...

moonson96的博客 1万+

Qt 5.14安装(配置MSVC 2017)

本文主要介绍Qt MSVC的安装,VS2017.

ifeng12358的博客 3710

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

caffe训练时,loss一般出现87.3365则保持不变

caffe训练时,loss一般出现很奇怪的值:87.3365,则保持不变下去。直觉就有问题。 搜索资料,找到多篇帖子: https://blog.youkuaiyun.com/u011215144/article/details/78479330 https://blog.youkuaiyun.com/cheese_pop/article/details/79582077 https://blog.csdn....

山中有石为玉 1549

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

caffe使用FCN时,训练loss总是保持不变的问题

使用原作者分享出来的FCN版本进行训练,如果直接使用.prototxt文件在caffe上训练,会出现loss基本保持不变的问题。这种问题的产生是因为原作者搭建网络时设置的问题,即初始化的问题:layer {  name: "upscore_pool4"  type: "Deconvolution"  bottom: "fuse_pool4"  top: "upscore_pool4"  param...

TDhuso的博客 1474

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【caffe】可视化网络的训练过程的loss和accuracy

标题@ 前言:我们在训练网络的时候,网络训练完毕后,需要可视化训练过程中loss和accuracy的变化情况,方便了解整个训练过程模型的优化情况。(之前使用caffe自带的脚本绘制曲线图,出现各种报错,遂采用python脚本来绘制曲线。) 1、保存训练过程的log。 我们在执行训练指令时,可以通过以下

sunnygirl's house 1152
上一篇: Tensorflow读取数据2-tfrecord
以行践言
博客等级 码龄13年 5粉丝 3原创
评论 15
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值