2017-02-12 8 views
1

"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を実装する必要がありますか)?

答えて

1

これは、ネットワークウェイトをリセットするための意図された方法ではありませんが、私はそれをやりました。次のコードでは、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)) 

私はそれが助けてくれることを願っています!

関連する問題