zoukankan      html  css  js  c++  java
  • tensorflow,model,object_detection,训练loss先下降后递增,到几百万,解决tensorflow,model,object,detection,loss,incease

    现象:训练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,这时就开始乱套了。

    所以,做数据要仔细呀
  • 相关阅读:
    [Java]去除html中的标签或者元素属性(正则表达式)
    一份非常完整的 MySQL 规范
    前端统计图 echarts 实现简单柱状图
    获取一个表中的字段总数(mysql) Navicat如何导出Excel格式表结构 获取某个库中的一个表中的所有字段和数据类型
    【学习笔记】splay入门(更新中)
    【题解】P1972 [SDOI2009]HH的项链
    【题解】P2024 [NOI2001]食物链
    【题解】P1291 百事世界杯之旅
    【题解】P2602 数字计数
    【题解】P2831 愤怒的小鸟
  • 原文地址:https://www.cnblogs.com/YouXiangLiThon/p/9505976.html
Copyright © 2011-2022 走看看