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

    所以,做数据要仔细呀
  • 相关阅读:
    November 07th, 2017 Week 45th Tuesday
    November 06th, 2017 Week 45th Monday
    November 05th, 2017 Week 45th Sunday
    November 04th, 2017 Week 44th Saturday
    November 03rd, 2017 Week 44th Friday
    Asp.net core 学习笔记 ( Area and Feature folder structure 文件结构 )
    图片方向 image orientation Exif
    Asp.net core 学习笔记 ( Router 路由 )
    Asp.net core 学习笔记 ( Configuration 配置 )
    qrcode render 二维码扫描读取
  • 原文地址:https://www.cnblogs.com/YouXiangLiThon/p/9505976.html
Copyright © 2011-2022 走看看