TensorFlow 如何处理 L1 正则化的差异?

ted*_*ddy 6 tensorflow

似乎您可以通过 tf.abs() 声明一个成本函数,然后将其传递给自动梯度生成(参见https://github.com/nfmcclure/tensorflow_cookbook/blob/master/03_Linear_Regression/04_Loss_Functions_in_Linear_Regressions/04_lin_reg_l2.v) py )

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

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

如果有人可以请指出我的实施,那将是很棒的。谢谢!

(我在 git 中寻找 tensorflow.py,但它甚至不存在)

sta*_*ndy 5

f(x) = abs(x)处处可微,除了在x=0。它的导数等于:

绝对导数

所以唯一的问题是 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))
Run Code Online (Sandbox Code Playgroud)

它打印0.0.