Инициализация параметров модели

NoneType означает, что вместо экземпляра любого класса или объекта, с которым вы работаете, вы действительно получили None. Это обычно означает, что вызов вызова или функции выше не сработал или возвратил неожиданный результат.

2
задан AL B 18 January 2019 в 19:33
поделиться

1 ответ

Параметры линейного слоя хранятся в model.weight и model.bias. Вам нужно скопировать их перед тренировкой, а потом восстановить. Это немного сложнее, чем то, что вы делаете в своем коде. Пример ниже

# clone and detach so that we have an actual backup copy,
# not merely a reference to the parameters
w1=model.weight.clone().detach()
b1=model.bias.clone().detach()

for i in range(3): # as many experiments as you wish to run

    # since we have detached, w1 and b1 are no longer nn.Parameter -
    # we have to rewrap them. We keep copying so that the tensors used
    # in the computation are separate from the backup copies
    model.weight=nn.Parameter(w1.clone())
    model.bias=nn.Parameter(b1.clone())

    # we reinitialize the optimizer because it looks at model.parameters()
    # if not for this line, it would try to optimize the values from 
    # the previous experiment!
    opt=torch.optim.SGD(model.parameters(), lr=1e-4)

    fitmodel(1000,model,loss1,opt)
0
ответ дан Jatentaki 18 January 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: