【亲测已解决】TypeError: __init__() takes 1 positional argument but 2 were given
问题描述
自学pytorch进行搭建神经网络并尝试训练时,出现了Pytorch报错TypeError : init() takes 1 positional argument but 2 were given
,然后网上查了很多原因,主要如下:
神经网络模型定义错误或没有实例化(非本人错误原因),参考链接如下
类初始化定义中把__init__
打成了__int__
(非本人错误原因),参考链接如下
__init__
少传了参数(非本人错误原因),参考链接如下
发现上述都不是我产生该错误的原因后,又仔细核查代码
原因分析:
最终发现了导致出现init() takes 1 positional argument but 2 were given
的原因,也是由于自身代码书写错误的原因导致的,具体如下:
for i in range(epoch): print("-------第{}轮训练开始-------".format(i+1)) tudui.train() #训练步骤开始 for data in train_dataloader: #------------>!!!!!!!报错代码位置 imgs, targets = data if torch.cuda.is_available(): # 图像cuda;标签cuda # 训练集和测试集都要有 imgs = imgs.cuda() targets = targets.cuda()
发现代码报错位置在for data in train_dataloader:
这里,但是书写确实没啥问题
找了好久终于发现在进行数据加载的时候transform=torchvision.transforms.ToTensor
出现书写错误掉了"()"。
正确的应该为transform=torchvision.transforms.ToTensor()
,如下:
#错误语法 torchvision.transforms.ToTensortrain_data = torchvision.datasets.CIFAR10(root="../data",train=True,transform=torchvision.transforms.ToTensor, download=False)test_data = torchvision.datasets.CIFAR10(root="../data",train=False,transform=torchvision.transforms.ToTensor, download=False)#正确语法 torchvision.transforms.ToTensor()train_data = torchvision.datasets.CIFAR10(root="../data",train=True,transform=torchvision.transforms.ToTensor(), download=False)test_data = torchvision.datasets.CIFAR10(root="../data",train=False,transform=torchvision.transforms.ToTensor(), download=False)
至此问题完美解决!!!!!!!!!!!!!!!!!!
来源地址:https://blog.csdn.net/weixin_52527544/article/details/126961910
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341