如何重置千层面网络的权重?
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))
希望对您有所帮助!
如果检测到 "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))
希望对您有所帮助!