训练网络时的错误记录

训练网络时的报错:(YOLOV5)

**一、

AttributeError: Can‘t get attribute ‘SPPF‘ on <module ‘models.common‘ from ‘H:\yolov5-5.0\models\**

1.问题描述:
丢失SPPF这个类,model/common.py里面去找到这个SPPF的类,把它拷过来到你这个Tags5的model/common.py里面,这样你的代码就也有这个类了,还要引入一个warnings包就行了!

2.解决方法:
将SPPF这个类复制到common.py,记得把import warnings放在上面去:

import warnings
class SPPF(nn.Module):
    # Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv5 by Glenn Jocher
    def __init__(self, c1, c2, k=5):  # equivalent to SPP(k=(5, 9, 13))
        super().__init__()
        c_ = c1 // 2  # hidden channels
        self.cv1 = Conv(c1, c_, 1, 1)
        self.cv2 = Conv(c_ * 4, c2, 1, 1)
        self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2)
 
    def forward(self, x):
        x = self.cv1(x)
        with warnings.catch_warnings():
            warnings.simplefilter('ignore')  # suppress torch 1.9.0 max_pool2d() warning
            y1 = self.m(x)
            y2 = self.m(y1)
            return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1))

二、

RuntimeError: result type Float can’t be cast to the desired output type long int

1.问题描述:
loss.py出现问题,版本不匹配

2.问题解决

  • 打开你的【utils】文件下的【loss.py】
  • 按【Ctrl】+【F】打开搜索功能,输入【for i in range(self.nl)】找到下面的一行内容:
    原始
  • 将红色部分用下列代码代替
 anchors, shape = self.anchors[i], p[i].shape 
  • 更改之后如下
    更改之后
  • 按【Ctrl】+【F】打开搜索功能,输入【indices.append】找到下面的一行内容:
    在这里插入图片描述
  • 将下面的代码替换掉上图中的红圈部分:
indices.append((b, a, gj.clamp_(0, shape[2] - 1), gi.clamp_(0, shape[3] - 1)))  # image, anchor, grid
  • 替换之后的效果是这样的:

在这里插入图片描述

  • 保存刚才的两个替换操作

三、

No dashboards are active for the current data set. Probable causes

1.问题描述:
复制tensorboard网址,打不开

2.问题解决:
在终端输入时,路径采用绝对路径

tensorboard --logdir "logs所在目录\logs"(绝对路径)

四、

RuntimeError: result type Float can‘t be cast to the desired output type __int64

1.问题描述:在YOLOV5上训练自己的数据集时出现问题。新版本的torch无法自动执行此转换,旧版本torch可以。

2.问题解决:
在utils文件夹下找到loss.py文件,Ctrl + F搜所gain,找到一下代码

gain = torch.ones(7, device=targets.device)

将其修改为:

gain = torch.ones(7, device=targets.device).long()

五、
1.问题描述:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb2 in position 6:invalidstartbyte
2.问题解决:
在提示报错的torch_utils.py文件58行,将原来的

return subprocess.check_output(s, shell=True, stderr=subprocess.STDOUT).decode()[:-1]

decode()改成decode(encoding = ‘gbk’)

return subprocess.check_output(s, shell=True, stderr=subprocess.STDOUT).decode(encoding = 'gbk')[:-1]
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值