There's a problem when I call Network.parameters() in pytorch in this line in my main function: optimizer = optim.SGD(Network.parameters(), lr=0.001, momentum=0.9)
I get the error code:
TypeError: parameters() missing 1 required positional argument: 'self'
My network is defined in this 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
Pretty sure that I imported all torch modules correctly. Any ideas of what I'm doing wrong here?
Thank you!
When doing Network.parameters()
you are calling the static method parameters
.
But, parameters
is an instance method.
So you have to instansiate Network
before calling parameters
.
network = Network()
optimizer = optim.SGD(network.parameters(), lr=0.001, momentum=0.9)
Or, if you only needs Network first this particular line:
optimizer = optim.SGD(Network().parameters(), lr=0.001, momentum=0.9)
You need a particular Network
instance, not just the Network
class.
optimizer = optim.SGD(Network().parameters(), lr=0.001, momentum=0.9)
Note the parentheses to create an instance of the Network
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With