如何重置千层面网络的权重?

How to reset weights of lasagne network?

如果检测到 "nan",我想重置我的卷积神经网络的权重。

我不知道该怎么做。

我也很困惑我是否应该在这种情况下也更改种子。

        if np.isnan(trainingLoss):
            print "..Training Loss is NaN"
            self.reset_network()

        if np.isnan(validationLoss):
            print "..Validation Loss is NaN"
            self.reset_network()

我应该如何实现 reset_network() ?

我不确定这是重置网络权重的预期方式,但我是这样做的。在下面的代码中,network 是对具有 2 个卷积层后跟最大池化层的 CNN 的引用。我相信它也应该适用于其他架构。

这里的技巧是用初始化函数更新网络的所有可训练参数。

def reset_weights(network):
    params = lasagne.layers.get_all_params(network, trainable=True)
    for v in params:
        val = v.get_value()
        if(len(val.shape) < 2):
            v.set_value(lasagne.init.Constant(0.0)(val.shape))
        else:
            v.set_value(lasagne.init.GlorotUniform()(val.shape))

希望对您有所帮助!