2016-11-01 2 views
0

깊은 학습 모델에 대한 tensorflow 구현을 읽을 때, 나는 훈련 과정에 포함 된 다음 코드 세그먼트를 이해하려고합니다.tensorflow에서 미니 배치 그라디언트 괜찮은 구현

self.net.gradients_node = tf.gradients(loss, self.variables) 
for epoch in range(epochs): 
      total_loss = 0 
      for step in range((epoch*training_iters), ((epoch+1)*training_iters)): 
       batch_x, batch_y = data_provider(self.batch_size) 

       # Run optimization op (backprop) 
       _, loss, lr, gradients = sess.run((self.optimizer, self.net.cost, self.learning_rate_node, self.net.gradients_node), 
                feed_dict={self.net.x: batch_x, 
                  self.net.y: util.crop_to_shape(batch_y, pred_shape), 
                  self.net.keep_prob: dropout}) 

       if avg_gradients is None: 
        avg_gradients = [np.zeros_like(gradient) for gradient in gradients] 
       for i in range(len(gradients)): 
        avg_gradients[i] = (avg_gradients[i] * (1.0 - (1.0/(step+1)))) + (gradients[i]/(step+1)) 

       norm_gradients = [np.linalg.norm(gradient) for gradient in avg_gradients] 
       self.norm_gradients_node.assign(norm_gradients).eval() 



       total_loss += loss 

나는 그것이 미니 배치 그라데이션에 상당한 관련이 있다고 생각하지만, 나는 그것이 작동합니까 방법을 이해 할 수없는, 또는

enter image description here

답변

0
을 다음과 같이 내가 같이 알고리즘에 연결하는 어려움이

미니 배치 SGD와 관련이 없습니다.

모든 시간 간격에 대한 평균 그래디언트를 계산합니다. 첫 번째 시간 단계 avg_gradients에는 방금 계산 된 그라디언트가 포함 된 후 두 번째 단계 이후에 두 단계의 두 그라디언트의 요소 평균이됩니다. n 단계 후에는 지금까지 계산 된 모든 n 그라디언트의 요소 평균이됩니다. 이러한 평균 구배는 정규화됩니다 (표준이 1이되도록). 그러한 평균적인 그라디언트가 제시된 맥락없이 왜 필요한지를 말하기는 어렵습니다.

+0

안녕하세요, lshamael 님, 회신 해 주셔서 감사합니다. 나는 원래의 게시물에 전체 훈련 반복 부분을 포함시킵니다. 나를 혼란스럽게하는 또 다른 이유는 원래 avg_gradients인데, 원래 0으로 정의되었습니다. avg_gradients [i] = 0이므로, avg_gradients [i] = (avg_gradients [i] * (1.0 - (1.0/(step + 1)))) + (gradients [i]/(step +1) 왼쪽의 첫 번째 용어와 마찬가지로 0 일뿐입니다. avg_gradients [i] = gradients [i]/(step + 1), 맞습니까? 이 그라데이션 조작이 무엇을 목표로 하는지를 알 수는 없습니다. – user288609

+0

예, 첫 번째 단계 **에서 ** 단계 +1 = 1이므로 'avg_gradients [i] = grandients [i]'입니다. 연속 된 각 단계에서'avg_gradients is None' 조건이 성립하지 않으므로 더 이상 0이 아닙니다. – Ishamael

+0

감사합니다. 그러나 배치 SGD가 아닌 경우이 구현에 대한 기본 알고리즘 (또는 논리)은 무엇입니까? 방금 원본 게시물을 업데이트했습니다. – user288609

관련 문제