2017-01-07 1 views
1

그냥 tf.abs()로 비용 함수를 선언 한 다음 자동 그래디언트 생성 (https://github.com/nfmcclure/tensorflow_cookbook/blob/master/03_Linear_Regression/04_Loss_Functions_in_Linear_Regressions/04_lin_reg_l1_vs_l2.py 참조)TensorFlow는 L1 정규화를위한 미분을 어떻게 처리합니까?

을 참조하십시오. 그러나 우리는 abs()가 구별 할 수 없다는 것을 안다.

Tensorflow에서 어떻게 이루어 집니까? [-1,1]에 임의로 숫자를 던지나요?

누군가가 위대한 것이 될 수있는 구현을 지적 할 수 있다면. 감사!

답변

0

f(x) = abs(x)x=0을 제외하고 모든 곳에서 미분 가능하다

는 (나는 자식에 tensorflow.py을 찾았지만, 심지어 존재하지 않음). 그것은 파생 같음 :

abs derivative

그래서 유일한 문제는 tensorflow이 x=0에서 파생 구현하는 방법이다. 수동으로 확인할 수 있습니다.

import tensorflow as tf 
x = tf.Variable(0.0) 
y = tf.abs(x) 
grad = tf.gradients(y, [x])[0] 
with tf.Session() as sess: 
    sess.run(tf.global_variables_initializer()) 
    print(sess.run(grad)) 

0.0이 인쇄됩니다.

관련 문제