pytorch. Передача веса предварительно обученной модели на другую модель - PullRequest
0 голосов
/ 21 января 2020

Я новичок в python и pytorch и пытаюсь перенести слои и веса предварительно обученной модели в другую модель для регрессии.

Эти две модели имеют одинаковую структуру, и я хочу перенести слои и веса предварительно обученной модели, кроме последнего слоя.

Пожалуйста, дайте мне знать, как это сделать.

вот мой код предварительно обученной модели.

class Net(torch.nn.Module):
    def __init__(self, n_feature, n_hidden1, n_hidden2, n_hidden3, n_hidden4, n_hidden5, n_output):
        super(Net, self).__init__()
        self.hidden1 = torch.nn.Linear(n_feature, n_hidden1)   
        self.hidden2 = torch.nn.Linear(n_hidden1, n_hidden2)   
        self.hidden3 = torch.nn.Linear(n_hidden2, n_hidden3)
        self.hidden4 = torch.nn.Linear(n_hidden3, n_hidden4)
        self.hidden5 = torch.nn.Linear(n_hidden4, n_hidden5)
        self.predict = torch.nn.Linear(n_hidden5, n_output)   

    def forward(self, x):
        x = torch.relu(self.hidden1(x))      
        x = torch.relu(self.hidden2(x))
        x = torch.relu(self.hidden3(x))
        x = torch.relu(self.hidden4(x))
        x = torch.relu(self.hidden5(x))
        x = self.predict(x)             
        return x


net = Net(n_feature=4, n_hidden1=100, n_hidden2=80, n_hidden3=50, n_hidden4 = 35, n_hidden5 = 20, n_output=1)
optimizer = torch.optim.Adam(net.parameters(), lr=0.001)
loss_func = torch.nn.MSELoss()

for t in range(20000):
    prediction = net(xs_train)     
    loss = loss_func(prediction, ys_train)     
    optimizer.zero_grad()   
    loss.backward()         
    optimizer.step()    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...