pytorch maskrcnn 报错.

本文记录了使用torchvision的MaskRCNN模型时遇到的一个错误:call takes 2 positional arguments but 3 were given。该问题源于作者在自己的代码中同时引入了两个不同版本的Compose类,最终通过明确指定使用maskrcnn库中的Compose类解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天用 torchvision 官方提供的maskrcnn 版本是可以运行的.
单独可以跑, 后来合并到我的系统里就不能运行了, 报下面的错误. 搞了2个多小时.

class Compose(object):
    def __init__(self, transforms):
        self.transforms = transforms

    def __call__(self, image, target):
        for t in self.transforms: 
            image, target = t(image, target) # 在这里报错
        return image, target


报错内容如下
call takes 2 positional arguments but 3 were given

后来经过不断的跟踪和排查发现, 原来是.
Compose 这个类在transforms.py文件中又定义了一次.
我还以为这个类和 torchvision.transforms 中定义的Compose是一样的.
于是在我的代码里, 就把transforms的引用改成了 torchvision.transforms
结果就出错了,
两个文件中的Compose 类是不一样的
torchvision.transforms中的Compose类 call 方法的参数是2个, 而示例中重新写的Compose 的 call 方法的参数是1个. 所以就提示上面的错误…
排除方法也很简单, 将
import torchvision.transforms
改成了
import maskrcnn.transforms
就可以了.
maskrcnn在我这边是文件夹名.模块名

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值