Ручная регулировка параметров горелки.нн.Модуль - PullRequest
0 голосов
/ 04 августа 2020

Предположим, у меня есть простая нейронная сеть, определенная следующим образом:

import torch
import torch.nn as nn

class Net(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc1 = nn.Linear(2,2)
        self.fc2 = nn.Linear(2,2)
    
    def forward(self, x):
        x = F.relu(self.fc1(x))
        x = self.fc2(x)
        
        return x
    
net = Net()

Выполнение следующих действий:

for param in net.parameters():
    print(param.data)

дает что-то вроде:

tensor([[-0.0776,  0.2409],
        [ 0.3478, -0.6820]])
tensor([-0.6311,  0.2323])
tensor([[-0.5466,  0.0341],
        [ 0.5822,  0.7005]])
tensor([-0.5624,  0.3278])

Давайте скажем, что у меня есть тензор ([[0,0], [0,1]]), и я хотел заменить первый param.data на свой собственный тензор.

Возможно ли это, и если да, то как я могу это сделать?

1 Ответ

2 голосов
/ 04 августа 2020

Должно быть возможно, хотя я не знаю причину, по которой вы хотели бы это сделать, ха-ха, в любом случае это должно быть:


replace_with = tensor([[0,0],[0,1]])

for parameter in net.parameters():
    parameter.data = replace_with
    break

Теперь первым элементом параметров должен быть ваш пользовательский тензор. Надеюсь, это решит вашу проблему :)

...