2016-12-26 1 views

답변

3

Theano/Tensorflow 및 라이브러리를 사용하면 얻을 수있는 이점 중 하나가 위에 추가됩니다. 그들은 수학 함수 및 연산의 자동 그라데이션 계산을 제공 할 수 있습니다.

Keras는 호출하여 얻을 : 모든 params에 대한 업데이트 규칙을 작성하는 데 사용되는 그라디언트를 얻기 위해 옵티 마이저에 의해 호출 차례 (keras/optimizers.py) grads = self.get_gradients(loss, params)

# keras/theano_backend.py 
def gradients(loss, variables): 
    return T.grad(loss, variables) 

# keras/tensorflow_backend.py 
def gradients(loss, variables): 
    '''Returns the gradients of `variables` (list of tensor variables) 
    with regard to `loss`. 
    ''' 
    return tf.gradients(loss, variables, colocate_gradients_with_ops=True) 

. 여기서 params은 계층의 학습 가능한 가중치입니다. 그러나 람다 기능 레이어에 의해 생성 된 레이어에는 학습 가능한 가중치가 없습니다. 그러나 이들은 순방향 prob를 통해 손실 함수에 영향을 미치므로 간접적으로 다른 계층의 훈련 가능한 가중치 그라디언트 계산에 영향을 미칩니다.

새로운 기본 수학 연산/함수를 정의 할 때만 새로운 그래디언트 계산을 작성해야합니다. 또한 사용자 정의 손실 함수를 작성할 때 자동 grad은 거의 항상 그라데이션 계산을 처리합니다. 그러나 사용자 지정 함수의 분석적 그래디언트를 구현하는 경우 선택적으로 (항상은 아니지만) 학습을 최적화 할 수 있습니다. 예를 들어, softwax 함수는 exp, sum 및 div로 표현할 수 있으며 자동 grad은이를 처리 할 수 ​​있지만 분석/기호 grad은 일반적으로 Theano/Tensorflow에서 구현됩니다.

새로운 비밀 작전을 구현하기 위해 당신은 그것에 대해 아래의 링크를 볼 수 있습니다 http://deeplearning.net/software/theano/extending/extending_theano.html https://www.tensorflow.org/versions/r0.12/how_tos/adding_an_op/index.html

관련 문제