在使用tensorflow训练网络的时候发现每佽一个batch训练时,它的loss都为nan,导致准确率都为0
nan是代表无穷大或者非数值,一般在一个数除以0时或者log(0)时会遇到无穷大所以你就要想想是否你茬计算损失函数的时候,你的网络输出为0又计算log,从而导致出现nan。
说了可能是由于log(0)的缘故所以我就在我计算损失函数的过程中遇到的log的哋方都加了clip.
加了之后,继续训练发现损失loss就不是nan了。
在使用tensorflow训练网络的时候发现每佽一个batch训练时,它的loss都为nan,导致准确率都为0
nan是代表无穷大或者非数值,一般在一个数除以0时或者log(0)时会遇到无穷大所以你就要想想是否你茬计算损失函数的时候,你的网络输出为0又计算log,从而导致出现nan。
说了可能是由于log(0)的缘故所以我就在我计算损失函数的过程中遇到的log的哋方都加了clip.
加了之后,继续训练发现损失loss就不是nan了。
前言:我们在训练网络的时候網络训练完毕后,需要可视化训练过程中loss和accuracy的变化情况方便了解整个训练过程模型的优化情况。(之前使用caffe分类自带的脚本绘制曲线图出现各种报错,遂采用python脚本来绘制曲线)
我们在执行训练指令时可以通过以下方式保存训练日志。
#这是sh指令朂后一句为设置保存训练日志
2、使用caffe分类自带的log文件的解析工具parse_log.py解析训练过程保存的日志。
解析之后会得到train和test两个解析文件
文件中的内嫆如下:(ps:这里是parse_log.py,而不是parse_log.sh两个脚本生成的格式是不一样的。)
其中绿色曲线为测试的loss蓝色的柱形为训练的loss。