如何在训练期间更改/重置单个神经元

问题描述

我想测试在训练期间随机重置某些神经元的影响,在基于 Pytorch 的模型中,具有许多这样的线性层:

class Net(nn.Module):
    def __init__(self):
        super(Net,self).__init__()
        self.linear1 = nn.Linear(D,M)
        self.linear2 = nn.Linear(M,M)
        self.linear3 = nn.Linear(M,M)
        self.linear4 = nn.Linear(M,K)

    def forward(self,x):
        x = F.relu(self.linear1(x))
        x = F.relu(self.linear2(x))
        x = F.relu(self.linear3(x))
        x = self.linear4(x)
        x = F.log_softmax(x,dim=1)
               
        return x

理想情况下,我想实现一个函数/代码片段,在每个时期开始时重置每层中 1 个或多个随机神经元的权重。

我尝试通过调用参数或 state_dict 来实现此功能,但到目前为止,我仅在尝试此操作时获得许可和异常错误。我也不确定这应该在模块本身还是在培训部分中实现。

非常欢迎任何建议!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...