2017-02-12 3 views
1

"나노"가 감지되면 콘볼 루션 신경망의 가중치를 재설정하고 싶습니다.라자냐 네트워크의 무게를 다시 설정하는 방법은 무엇입니까?

확실하지 않은 방법입니다.

또한이 경우 시드를 변경해야하는지 혼동합니다.

 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)) 

도움이되기를 바랍니다.