重置pytorch中的神经网络参数

问题描述

我有一个具有以下结构的神经网络:

var calendar = new FullCalendar.Calendar(calendarEl,{
timeZone: 'UTC',headerToolbar: {
  left: 'prev,next today',center: 'title',right: 'dayGridMonth,timeGridWeek,timeGridDay'
},editable: true,dayMaxEvents: true,// when too many events in a day,show the popover
events: 'https://fullcalendar.io/demo-events.json?overload-day',eventMouseEnter: function(info ){ // when mouse over
    console.log('eventMouseEnter')
    $(info.el).trigger('mousedown').trigger('mousemove') // it not worked
}

我需要通过重置神经网络的参数将模型恢复为未学习状态。我可以使用以下方法class myNetwork(nn.Module): def __init__(self): super(myNetwork,self).__init__() self.bigru = nn.GRU(input_size=2,hidden_size=100,batch_first=True,bidirectional=True) self.fc1 = nn.Linear(200,32) torch.nn.init.xavier_uniform_(self.fc1.weight) self.fc2 = nn.Linear(32,2) torch.nn.init.xavier_uniform_(self.fc2.weight) 层执行此操作:

nn.Linear

但是,要重置def reset_weights(self): torch.nn.init.xavier_uniform_(self.fc1.weight) torch.nn.init.xavier_uniform_(self.fc2.weight) 图层的权重,我找不到任何这样的代码段。

我的问题是,如何重置nn.GRU层?任何其他重置网络的方法也都可以。任何帮助表示赞赏。

解决方法

您可以在图层上使用reset_parameters方法。如here

for layer in model.children():
   if hasattr(layer,'reset_parameters'):
       layer.reset_parameters()

或者另一种方法是先保存模型,然后重新加载模块状态。使用torch.savetorch.load see docs for more Saving and Loading Models

,

pytorch 新手,我想知道这是否可以成为解决方案 :)

假设模型来自 torch.nn.module,

将其重置为零:

dic = Model.state_dict()
for k in dic:
    dic[k] *= 0
Model.load_state_dict(dic)
del(dic)

随机重置

dic = Model.state_dict()
for k in dic:
    dic[k] = torch.randn(dic[k].size())  
Model.load_state_dict(dic)
del(dic)