亲测已解决TypeError: __init__() takes 1 positional argument but 2 were given
Posted Dukixytapoo.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了亲测已解决TypeError: __init__() takes 1 positional argument but 2 were given相关的知识,希望对你有一定的参考价值。
问题描述
自学pytorch进行搭建神经网络并尝试训练时,出现了Pytorch报错TypeError : init() takes 1 positional argument but 2 were given
,然后网上查了很多原因,主要如下:
1、神经网络模型定义错误或没有实例化(非本人错误原因),参考链接如下
2、类初始化定义中把__init__
打成了__int__
(非本人错误原因),参考链接如下
3、__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.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)
#正确语法 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)
至此问题完美解决!!!!!!!!!!!!!!!!!!
解决TypeError: __init__() missing 1 required positio
解决TypeError: __init__() missing 1 required positional argument: 'on_delete'试用Djiango的时候发现执行mange.py makemigrations 和 migrate是会报错,少位置参数on_delete,查了一下是因为指定外键的方式不对,改一下就OK了。
代码如下:
from django.db import models# Create your models here.class BookInfo(models.Model): """model of book infomation""" # 书的标题 字符串类型 最大长度20 btitle = models.CharField(max_length=20) # 出版日期 日期类型 bpub_date = models.DateTimeField()class HeroInfo(models.Model): """model of hero information""" # 字符串类型 最大长度30 hname = models.CharField(max_length=30) # 性别 布尔类型 hgender = models.BooleanField() # 内容 字符串类型 最大长度1000 hcontent = models.CharField(max_length=1000) # 一对多设计 多方持有一方的外键 hbook = models.ForeignKey(BookInfo)
解决方法:
# 一对多设计 多方持有一方的外键 # hbook = models.ForeignKey(BookInfo) hbook = models.ForeignKey('BookInfo', on_delete=models.CASCADE)
以上是关于亲测已解决TypeError: __init__() takes 1 positional argument but 2 were given的主要内容,如果未能解决你的问题,请参考以下文章
TypeError: __init__() 接受 2 个位置参数,但给出了 4 个
TypeError: __init__() 接受 1 个位置参数,但给出了 3 个
TypeError:__init__() 得到了一个意外的关键字参数“categorical_features”:onehotencoder
Python报错:TypeError: __init__() got an unexpected keyword argument 'io_loop' 原因及解决方案
TypeError:__ init __()占用1个位置参数,但给出3个
执行python manage.py makemigrations时报错TypeError: __init__() missing 1 required positional argument: