在进行转移学习时如何重塑pytorch CNN模型的最后一层

时间:2019-12-01 20:47:57

标签: keras neural-network pytorch transfer-learning

实际上,我正在尝试将keras结构复制到pytorch。(pytorch中的新功能)。 这是keras架构

base_model = InceptionV3(weights='imagenet', include_top=False)
x = base_model.output
x = Dense(512, activation='relu')(x)
predictions = Dense(49*6,activation='sigmoid')(x)
reshape=Reshape((49,6))(predictions)
model = Model(inputs=base_model.input, outputs=reshape)
for layer in base_model.layers:
    layer.trainable = False

我想重塑网络工作的最后一层。我已经实施了转移学习。

model =  models.inception_v3(pretrained=True)

for param in model.parameters():
    param.requires_grad = False

num_ftrs = model.fc.in_features

我相信,如果我可以在我的以下架构中附加最后一层resnet,则可以解决问题。但是我不知道如何附上它们

class CNN(nn.Module):
    def __init__(self):
        super(CNN, self).__init__()
        self.fc1 = nn.Linear(num_ftrs, 512)
        self.fc2 = nn.Linear(512, 49*6)

    def forward(self, x):
        print (x.shape)
        x = x.view(-1,num_ftrs)
        #print (x.shape)
        x = F.relu(self.fc1(x))
        x = self.fc2(x)
        x=torch.sigmoid(x.view(49,6))
        return x

任何想法,如何解决此问题

0 个答案:

没有答案