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

    所以,做数据要仔细呀
  • 相关阅读:
    这两天自己模仿写的一个Asp.Net的显示分页方法 附加实体转换和存储过程
    JavaScript 删除 ASP.NET 设置的多值 Cookie 的方法
    Http 请求处理流程
    ASP.NET实现二维码(QRCode)的创建和读取
    ASP.NET实现网站的自动升级
    ASP.NET乱码深度剖析
    ASP.net学习总结
    ASP.net MVC基础
    umeditor编辑器复制粘贴图片上传
    fckeditor编辑器复制粘贴图片上传
  • 原文地址:https://www.cnblogs.com/YouXiangLiThon/p/9505976.html
Copyright © 2011-2022 走看看