Issue
I am trying to use nn.ModuleDict
following this documentation page:
I have this PyTorch network:
class Net(nn.Module):
def __init__(self, kernel_size):
super(Net, self).__init__()
modules = {}
modules["layer1"] = nn.Conv2d(3, 16, kernel_size=kernel_size, stride=1, padding=2)
self.modules = nn.ModuleDict(modules)
def forward(self, x):
x = self.modules["layer1"](x)
when I use the forward method, I get the following error:
'method' object is not subscriptable
when I change the forward method to:
def forward(self, x):
x = self.modules()["layer1"](x)
I get the following error:
TypeError: 'generator' object is not subscriptable
Solution
The key "modules"
is already used by nn.Module
. The property is used to retrieve all modules of the model: see nn.Module.modules
. You need to use another property name.
For example:
class Net(nn.Module):
def __init__(self, kernel_size):
super(Net, self).__init__()
modules = {}
modules["layer1"] = nn.Conv2d(3, 16,
kernel_size=kernel_size, stride=1, padding=2)
self.layers = nn.ModuleDict(modules)
def forward(self, x):
x = self.layers["layer1"](x)
return x
Answered By - Ivan
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.