gpt4 book ai didi

python - Tensorflow 训练错误

转载 作者:太空宇宙 更新时间:2023-11-04 05:06:34 26 4
gpt4 key购买 nike

我正在尝试在另一个基于 Pascal VOC 格式的数据集上运行 faster_rcnn。但这就是训练的结果:

warning and NAN losses

在如下所示的警告之后,损失值全部转到nan:

proposal_layer_tf.py:150: RuntimeWarning: invalid value encountered in greater_equal keep =np.where((ws >= min_size) & (hs >= min_size))[0]

这是 proposal_layer_tf.py 的第 146-151 行:

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 940m)

最佳答案

问题可能是由您的注释引起的。在 Faster-RCNN 实现中,当他们将边界框加载到数据框中时,他们将坐标 x1,y1,x2,y2 减去 1 使其为 0-基于。在我的例子中,我创建了自己的 xml 注释,它们已经是基于 0 的。因此,如果我运行默认的 Faster-RCNN 实现,从 0 中减去 1 会导致下溢错误。所以删除那个减法解决了我的问题。

您可以删除 pascal_voc.py 中的减法或编辑您的注释以使其从 1 开始。如果您选择编辑 pascal_voc.py 文件,请转到此处:

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

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

关于python - Tensorflow 训练错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44313892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com