This is my network; I have 2 CNN layers and 1 FC layer.
I've already trained CNN filters for particular domain, so I'm trying to train the FC layer only.
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.layer1 = nn.Sequential(
nn.Conv2d(in_channels = 1, out_channels = 1, kernel_size = (2,2), stride = 1, padding = 1, bias = False),
nn.AvgPool2d(kernel_size = (2,2), stride = (2,2)),
)
self.layer2 = nn.Sequential(
nn.Conv2d(in_channels = 1, out_channels = 1, kernel_size = (2,2), stride = 1, padding = 1, bias = False),
nn.AvgPool2d(kernel_size = (2,2), stride = (2,2)),
)
self.fc = nn.Linear(1200, 1)
self.dropout = nn.Dropout(p = 0.10)
self.sigmoid = nn.Sigmoid()
def forward(self, x):
out1 = self.layer1(x)
out2 = self.layer2(out1)
out3 = out2.reshape(out2.size(0), -1)
output = self.sigmoid(self.dropout((self.fc(out3))))
return output
And I am trying to assign pre-trained values of parameters in this network.
params = list(Net().parameters())
params
Output:
[Parameter containing:
tensor([[[[ 0.2240, 0.2135],
[-0.2901, 0.4827]]]], requires_grad=True),
Parameter containing:
tensor([[[[-0.0363, -0.2801],
[ 0.0853, -0.0217]]]], requires_grad=True),
Parameter containing:
tensor([[-0.0155, -0.0073, -0.0065, ..., 0.0012, -0.0213, -0.0287]],
requires_grad=True),
Parameter containing:
tensor([-0.0010], requires_grad=True)]
params[0][0][0][0][0] = -0.2454
RuntimeError: a view of a leaf Variable that requires grad is being used in an in-place operation.
Is there any specific way to assign values to network's parameters?