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,这时就开始乱套了。

    所以,做数据要仔细呀
  • 相关阅读:
    UVA 707
    我写了一起 Makefile(一)
    百度mp3接口
    MBProgressHUD -[__NSCFString sizeWithAttributes:]: unrecognized selector问题解决了
    BCM策略路由交换芯片
    HDU 4006 The kth great number AVL解
    PHP进口Excel至MySQL方法
    隐藏Console形式无效(继续1)
    优秀的前端project如何制定一个老师--html学习路径
    地址阵列
  • 原文地址:https://www.cnblogs.com/YouXiangLiThon/p/9505976.html
Copyright © 2011-2022 走看看