Image processing 将变量传递给类初始化定义中的nn.Conv2d参数
所以我想在初始化新对象时传递一些新变量,比如kernel_size。让我们假设Image processing 将变量传递给类初始化定义中的nn.Conv2d参数,image-processing,computer-vision,pytorch,cnn,Image Processing,Computer Vision,Pytorch,Cnn,所以我想在初始化新对象时传递一些新变量,比如kernel_size。让我们假设net=Net10(5,2,4,3,1,1)。所以我得到了这个类的一个对象,它的参数我不希望总是常数,否则我将不得不定义很多类。现在,我想在self.Conv2d中传递kernel\u size,我得到一个语法错误:位置参数跟在关键字参数后面 有人知道如何解决这个问题吗?我应该把它全部改成函数而不是类吗 class Net10(nn.Module): def __init__ (self, ker
net=Net10(5,2,4,3,1,1)
。所以我得到了这个类的一个对象,它的参数我不希望总是常数,否则我将不得不定义很多类。现在,我想在self.Conv2d
中传递kernel\u size
,我得到一个语法错误:位置参数跟在关键字参数后面
有人知道如何解决这个问题吗?我应该把它全部改成函数而不是类吗
class Net10(nn.Module):
def __init__ (self, kernel_size, stride, pooling, num_classes, neurons, ActFunn, *args):
super(Net10, self).__init__()
self.kernel = kernel_size
self.stride = stride
self.pooling = pooling
self.num_classes = num_classes
self.neurons = neurons
self.Actfun = ActFunn
self.conv1 = nn.Conv2d(in_channels=1, out_channels=32, kernel, padding=2, stride=1)
self.pool = nn.MaxPool2d(pooling, pooling)
self.fcinput= round (28 / pooling)
尝试:
self.conv1=nn.Conv2d(in_channels=1,out_channels=32,kernel_size=self.kernel,padding=2,stride=1)
更详细地说:python函数(例如conv层的\uuuu init\uuuu
)可以有两种输入参数:位置参数:即根据输入参数在参数列表中的位置将其与函数变量相关联。另一个“风格”是关键字参数:与关键字一起给出的参数,例如,
in_channels=1
等
python通常不允许位置参数和关键字参数的任意混合。可以将位置参数后跟关键字参数,但一旦开始声明关键字参数,就不能有位置参数
self.conv1=nn.Conv2d(在_通道中=1,#关键字参数
out_channels=32,#关键字参数
内核,#位置参数(没有定义此参数的“关键字”)
padding=2,#关键字
步幅=1)#关键字
这是否回答了您的问题?我这样做了。现在我得到一个名称错误:名称“kernel”不是defined@SabaDaftari它是kernel\u size=kernel
没有kernel
变量,只有self.kernel
和kernel\u size
,所以它要么是kernel\u size=self.kernel
要么是kernel\u size=kernel\u size
。