首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >感流训练误差

感流训练误差
EN

Stack Overflow用户
提问于 2017-06-01 17:38:19
回答 1查看 338关注 0票数 2

我试图在另一个基于pascal格式的数据集中运行faster_rcnn。但这就是训练的结果:

在警告之后,如下面所示,损失值都转到nan

proposal_layer_tf.py:150: RuntimeWarning:在greater_equal keep = np.where((ws >= min_size) & (hs >= min_size)中遇到的无效值)

这是proposal_layer_tf.py第146-151行:

代码语言:javascript
复制
def _filter_boxes(boxes, min_size):
    """Remove all boxes with any side smaller than min_size."""
    ws = boxes[:, 2] - boxes[:, 0] + 1
    hs = boxes[:, 3] - boxes[:, 1] + 1
    keep = np.where((ws >= min_size) & (hs >= min_size))[0]
return keep

正如您所看到的,总损失值正在以一种奇怪的方式发生变化,在警告之后,它变成nan。我能做些什么才能补救呢?

(gpu: Geforce 940米)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-02 19:12:41

这个问题很可能是由您的注释引起的。在更快的RCNN实现中,当它们将边界框加载到数据帧中时,它们会通过x1,y1,x2,y2减去坐标1,使其基于0。在我的例子中,我创建了自己的xml注释,它们已经基于0。因此,如果我运行默认速度更快的ran实现,从1中减去0将导致一个下流错误。所以去掉减法解决了我的问题。

您可以删除pascal_voc.py中的减法或编辑注释,使其基于1。如果您选择编辑pascal_voc.py文件,请转到以下位置:

代码语言:javascript
复制
def _load_pascal_annotation(self, index):

    # ...
    # ...
    # ...

    # Load object bounding boxes into a data frame.
    for ix, obj in enumerate(objs):
        bbox = obj.find('bndbox')
        # Make pixel indexes 0-based
        x1 = float(bbox.find('xmin').text) #- 1 <- comment these out
        y1 = float(bbox.find('ymin').text) #- 1
        x2 = float(bbox.find('xmax').text) #- 1
        y2 = float(bbox.find('ymax').text) #- 1

    # ...
    # ...
    # ...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44313892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档