pytorch Network.parameters() 缺少 1 个必需的位置参数:'self'
pytorch Network.parameters() missing 1 required positional argument: 'self'
当我在主函数的这一行中调用 pytorch 中的 Network.parameters() 时出现问题:
优化器 = optim.SGD(Network.parameters(), lr=0.001, momentum=0.9)
我收到错误代码:
TypeError: parameters() missing 1 required positional argument: 'self'
我的网络是在这个class
中定义的
class Network(nn.Module):
def __init__(self):
super(Network, self).__init__()
self.conv1 = nn.Conv2d(1, 32, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(32, 64, 5)
self.pool2 = nn.MaxPool2d(2, 2)
self.conv3 = nn.Conv2d(64, 64, 5)
self.pool2 = nn.MaxPool2d(2, 2)
self.fc1 = nn.Linear(64 * 5 * 5, 512)
self.fc2 = nn.Linear(512, 640)
self.fc3 = nn.Linear(640, 3756)
def forward(self, x):
x = self.pool(F.relu(self.conv(x)))
x = self.pool(F.relu(self.conv2(x)))
x = self.pool(F.relu(self.conv3(x)))
x = x.view(-1, 64 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x
非常确定我正确导入了所有 torch 模块。
对我在这里做错了什么有什么想法吗?
谢谢!
您需要一个特定的 Network
实例,而不仅仅是 Network
class.
optimizer = optim.SGD(Network().parameters(), lr=0.001, momentum=0.9)
注意括号以创建 Network
的实例。
在执行 Network.parameters()
时,您正在调用 静态方法 parameters
.
但是,parameters
是一个 实例方法 。
所以你必须在调用parameters
之前实例化Network
。
network = Network()
optimizer = optim.SGD(network.parameters(), lr=0.001, momentum=0.9)
或者,如果您首先需要网络,则此特定行:
optimizer = optim.SGD(Network().parameters(), lr=0.001, momentum=0.9)
当我在主函数的这一行中调用 pytorch 中的 Network.parameters() 时出现问题: 优化器 = optim.SGD(Network.parameters(), lr=0.001, momentum=0.9)
我收到错误代码:
TypeError: parameters() missing 1 required positional argument: 'self'
我的网络是在这个class
中定义的class Network(nn.Module):
def __init__(self):
super(Network, self).__init__()
self.conv1 = nn.Conv2d(1, 32, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(32, 64, 5)
self.pool2 = nn.MaxPool2d(2, 2)
self.conv3 = nn.Conv2d(64, 64, 5)
self.pool2 = nn.MaxPool2d(2, 2)
self.fc1 = nn.Linear(64 * 5 * 5, 512)
self.fc2 = nn.Linear(512, 640)
self.fc3 = nn.Linear(640, 3756)
def forward(self, x):
x = self.pool(F.relu(self.conv(x)))
x = self.pool(F.relu(self.conv2(x)))
x = self.pool(F.relu(self.conv3(x)))
x = x.view(-1, 64 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x
非常确定我正确导入了所有 torch 模块。 对我在这里做错了什么有什么想法吗?
谢谢!
您需要一个特定的 Network
实例,而不仅仅是 Network
class.
optimizer = optim.SGD(Network().parameters(), lr=0.001, momentum=0.9)
注意括号以创建 Network
的实例。
在执行 Network.parameters()
时,您正在调用 静态方法 parameters
.
但是,parameters
是一个 实例方法 。
所以你必须在调用parameters
之前实例化Network
。
network = Network()
optimizer = optim.SGD(network.parameters(), lr=0.001, momentum=0.9)
或者,如果您首先需要网络,则此特定行:
optimizer = optim.SGD(Network().parameters(), lr=0.001, momentum=0.9)