2017-01-07 23 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.pyTensorFlow如何处理L1正则化的差异?

。但我们知道abs()是不可微分的。

这是如何在Tensorflow中完成的?它只是随机地在[-1,1]中抛出一个数字?

如果有人可以请指点我的实施将是伟大的。谢谢!

(我找了在GIT tensorflow.py,但它甚至不存在)

回答

0

f(x) = abs(x)是微无处不在,除了在x=0。它衍生等于:

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