tensorflow,model,object_detection,训练loss先下降后递增,到几百万,解决tensorflow,model,object,detection,loss,incease
2024-08-26 08:11:37
现象:训练loss一开始下降一部分,跌代到若干次(具体多少和你的learning rate大小有关,大就迭代小就发生,小就需要多几次迭代)
日志如下(下面的日志来源于网络,我自己的日志已经clear掉了,不过不影响):
INFO:tensorflow:global step 272: loss = 0.2479 (0.158 sec/step)
INFO:tensorflow:global step 273: loss = 0.3874 (0.159 sec/step)
INFO:tensorflow:global step 274: loss = 0.2599 (0.158 sec/step)
INFO:tensorflow:global step 275: loss = 27207767073038008320.0000 (0.155 sec/step)
INFO:tensorflow:global step 276: loss = 363770730445224804352.0000 (0.154 sec/step)
INFO:tensorflow:global step 277: loss = 2319587573063963639808.0000 (0.157 sec/step)
INFO:tensorflow:global step 278: loss = 9538479895582634672128.0000 (0.155 sec/step)
INFO:tensorflow:global step 279: loss = 35610680577759077466112.0000 (0.153 sec/step)
网上说是可能数据增强的原因,但是根据现象,为什么一开始是正常的呢。知道我我看一个网上的同学说,他发现是他的
label_map.pbtxt中是有5个类别,但是在pipline.config中number_class:4,导致出现不一致,后面该同学修改过来就可以了。
我的解决是,我在label_map.pbtxt
中的id是1,name:cat,但是在生成tfrecord的时候是cats,这导致了不一致,使得训练中获取lable1出错。
为什么现象是loss先降低后崩掉(梯度爆炸中比较特殊的一种吧,个人认为)这样呢?
因为,一开始模型还处于非工作状态,在first stage的时候,模型通过识别到目标使得loss下降,当模型训练到一定程度,对目标识别越来越好,second
loss开始占主导或者second-stage输入变得有规律,不再随机,这时候,需要识别具体是什么目标的时候,tfrecord
里面的label是cats
,在label_map.pbtxt
需要找到
对应的id时,这时候因为“label_map.pbtxt
中的id是1,name:cat,但是在生成tfrecord的时候是cats
”不一致,导致没取到id,这时就开始乱套了。
所以,做数据要仔细呀
最新文章
- TomTom (16Q3)数据协议基础
- iOS 适配https
- PowerDesigner V16.5 安装文件
- 想了解JAVA的,看看(转载)
- Ubuntu 12.04 使用Eclipse搭建C/C++编译环境
- LDA-线性判别分析(三)
- vs2012连接sql2008(错误类型:Could not load file or assembly)
- JS弹出下载对话框以及实现常见文件类型的下载
- Database operations of Mysql
- Android读取/dev/graphics/fb0 屏幕截图
- struts ajax多级下拉菜单
- Kafka-python 客户端导致的 cpu 使用过高,且无法消费消息的问题
- show profiles 分析sql耗时瓶颈
- Fiddler Web Debugger的下载和安装(图文详解)
- MySQL权限问题
- php error_log错误信息写入文件
- Sqoop相关
- vue组件间传值
- apk包不能生成的原因之debug.keystore
- 重写(Override)