这是tensorflow model 中我使用它的faster--cnn,但是就是训练过程中,代码执行到一半

一般是step=40~120的时候就报错了:

INFO:tensorflow:global step 65: loss = 4.8004 (0.854 sec/step)
INFO:tensorflow:global step 66: loss = 0.2637 (0.868 sec/step)
INFO:tensorflow:global step 67: loss = 1.5711 (0.845 sec/step)
INFO:tensorflow:global step 68: loss = 0.2334 (0.866 sec/step)
INFO:tensorflow:global step 69: loss = 0.6833 (0.846 sec/step)
2017-07-11 14:47:16.293535: W tensorflow/core/framework/op_kernel.cc:1158] Invalid argument: Incompatible shapes: [1,63,4] vs. [1,64,4] 这种错误tensorflow model issue上面也有解介绍,主要
解决方案是
1、labels的class要从1开始不要从0开始,
或者
2、对于边界框0.00,0.99,改成0.01,0.98之类的避免边界, 但是上面基本不起作用,我还一直以为是自己数据的问题,毕竟我是用自己数据的且类别只有1类,
这样检查数据,看是训练到哪个图像就停止,然后返回查看是不是标注的框少了,多了,在边界等
情况,但是发现这是一个随机性的error。
最后面只能靠自己了,老老实实查看error的部分,然后traceback:
发现是这里出的错:
diff = prediction_tensor - target_tensor

一个是 [1,63,4] ,一个是[1,64,4],我们明明设置是64呀,怎么回事,跑出63????????
只能沿着向量流tensorflow to traceback:
发现这样一段代码:
      refined_box_encodings_masked_by_class_targets = tf.boolean_mask(
          refined_box_encodings_with_background,
          tf.greater(flat_cls_targets_with_background, 0)) 哎呀,这里就是把64变成63的万恶之源呀!!!!!!!!,我就不明白了,为什么这里这么明显是可能出问题的呀,
我又想,代码是自己改的,没有和github同步,会不会作者更新了嘞??? 然后就去github1上面看作者的源码和本地对比,果然!!!!!!
refined_box_encodings_masked_by_class_targets = tf.boolean_mask(
refined_box_encodings_with_background,
tf.greater(one_hot_flat_cls_targets_with_background, 0)) 不一样,然后发现开发者做了一些改动,我就看他们的改动按照自己的来改,果然,ok了,其中开发者还加了一个注释:
# For anchors with multiple labels, picks refined_location_encodings
# for just one class to avoid over-counting for regression loss and
# (optionally) mask loss. 是吧,后面阔以啦,具体开发者代码在:faster_rcnn_meta_arch.py _loss_box_classifier函数里哈
链接https://github.com/tensorflow/models/blob/master/research/object_detection/meta_architectures/faster_rcnn_meta_arch.py


												

Incompatible shapes during the half way training---Invalid argument: Incompatible shapes: [1,63,4] vs. [1,64,4]的更多相关文章

  1. format %x invalid or incompatible with argument问题解决方法

    现在还有好多朋友在用Protel 99se来画图,可是在现在的双核或四核电脑上运行Protel出现错误并且弹出对话框:“format '%x' invalid or incompatible with ...

  2. file_put_contents 错误:failed to open stream: Invalid argument 一种原因

    今天在测试nilcms系统的时候,出现了一个报错,导致缓存无法更新: file_put_contents(C:\UPUPW_AP5.4\vhosts\d.tv\NilCMS_APP\include_r ...

  3. fdisk添加分区引起的Linux Error: 22: Invalid argument

    在Linux服务器(虚拟机)上使用fdisk添加分区.格式化分区后,遇到了Linux Error: 22: Invalid argument错误,操作步骤如下所示 [root@oracle-serve ...

  4. -bash: ulimit: pipe size: cannot modify limit: Invalid argument

    从root账号切换到oracle账号时,出现了"-bash: ulimit: pipe size: cannot modify limit: Invalid argument"提示 ...

  5. 【安卓】aidl.exe E 10744 10584 io_delegate.cpp:102] Error while creating directories: Invalid argument

    这几天在使用.aidl文件的时候eclipse的控制台总是爆出如下提示: aidl.exe E 10744 10584 io_delegate.cpp:102] Error while creatin ...

  6. php foreach 语法的遍历来源数组如果不是一个有效数组php会出现错误警告 Invalid argument supplied for foreach()

    在php中,foreach语法的遍历来源数组如果不是一个有效数组,php会出现错误警告 Invalid argument supplied for foreach() ,但是很多时候这个数组是取自某些 ...

  7. Yii 提示Invalid argument supplied for foreach() 等错误

    Yii 提示Invalid argument supplied for foreach() 或者 undefined variable: val等错误 只需要在对应的文件中加入error_report ...

  8. write函数出错返回invalid argument(EINVAL)问题

    还是在下载机上面遇到的. 话说为了长久的下载,后面又买了个16G的U盘格成EXT3放在角落下载,结果发现总是有几个种子在下载的时候会出错提示invalid argument. 之前也出过一样的错误提示 ...

  9. PHP--Warning: Invalid argument supplied for foreach() in ...

    1.背景 今天学习PHPExcel的使用,在代码执行foreach($data as $value){...}的时候出现这样一个警告提示:Warning: Invalid argument suppl ...

随机推荐

  1. 你创建的OpenStack高性能虚拟机能实现“零损耗”么?

    使用默认参数创建的虚拟机,虚拟机的VCPU在物理CPU不同核心之间动态调度,另外,由于Linux还可能会将软中断,内存交换等进程调度到虚拟机正在使用的物理核心上,这些因素导致这些虚拟机相对于物理机的计 ...

  2. solr系统query检索词特殊字符的处理

    solr是基于 lucence开发的应用,如果query中带有非法字符串,结果很可能是检索出所有内容或者直接报错,所以你对用户的输入必须要先做处理.输入星号,能够检索出所有内容:输入加号,则会报错. ...

  3. 理解Solr缓存及如何设置缓存大小

    文献地址:http://wangdg.com/understanding-and-tuning-solr-cache/ 理解Solr缓存及如何设置缓存大小 为了得到最好的检索性能,Solr会在内存中缓 ...

  4. SPOJ COT3 - Combat on a tree

    /* 考虑直接使用暴力来算的话 SG[i]表示以i为根的子树的SG值, 然后考虑枚举删除那个子树节点, 然后求拆成的树的sg异或值, 求mex即可 复杂度三次方 然后考虑尝试 整体来做 发现对于每次子 ...

  5. linux系统 python升级创建虚拟环境

    Python3.3以上的版本通过venv模块原生支持虚拟环境,可以代替之前的virtualenv. 该venv模块提供了创建轻量级“虚拟环境”,提供与系统Python的隔离支持.每一个虚拟环境都有其自 ...

  6. spring的IOC 的底层实现原理

    IOC:Inversion of Control  控制反转. 指的是 对象的创建权反转(交给)给 Spring. 作用是实现了程序的解耦合.

  7. 10.Appium驱动app报错

    1.首先手机使用usb连接电脑端接受控制 2.打开appium,配置Desired Capabilities 参数: Appium驱动打开微信App 参数配置如下: start session 报错: ...

  8. JS中点击事件冒泡阻止

    JS中点击事件冒泡阻止 解析: 一个div层'out',内含有一个div层'in'.如下: 两个层都绑定了点击事件,但是点击in层的时候,点击事件会出现冒泡现象,同时也会触发out层的点击事件. 但是 ...

  9. javascript select标签的操作

    用原生的方法对select标签的增删操作 1.选中某一个option,一般采用 option[i].selected  = true 2.添加option首先需要创建一个option的节点,然后插入到 ...

  10. Web移动端布局

    说到移动端,不得不提适配问题,因为现如今市面上移动设备的分辨率大小不同,显然咱们常用的px单位在这个时候就有些不太灵光了,为此,css3出了一个新单位——rem,rem是移动端神器,它完美解决了分辨率 ...