Как изменить последний слой модели CNN Pytorch при проведении трансферного обучения - PullRequest
0 голосов
/ 01 декабря 2019

На самом деле я пытаюсь скопировать структуру 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

Я верю, что если я смогу присоединить последний слой реснета с моей следующей архитектурой, проблема может быть решена. Но я не знаю, как их прикрепить

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

Любая идея, как решить эту проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...