除GradientDescentOptimizer tensorflow以外的优化器,其梯度值均为零

时间:2018-08-03 20:36:06

标签: python tensorflow

我真的很机智,不知道我还能问什么,所以我在这里问。我知道我的问题可能不是最好的,但是我希望至少能对我应该指出的方向提供一些指导。

我将在tensorflow和tensorboard中复制sci-kit learning的Elastic Net多重线性回归的实现作为学习练习,因此我最终可以继续实现和可视化更困难的机器学习算法。

我有一些代码使用Elastic Net Regularization作为损失函数进行多元线性回归。与sci-kit Learn的algorithm相比,有了梯度下降,它收敛到了次优的解决方案。通过一些搜索,我了解到sci-kit learning使用Xavier方法初始化权重,因此我也在tensorflow中进行了初始化。性能略有提高,但仍然无法与sklearn相提并论。我的下一个改进是更改优化器以尝试匹配性能,尽管我的研究告诉我scikit learning使用coordinate descent,这是在tensorflow中未实现的方法。

但是,这就是我遇到的问题。似乎简单地将优化器切换为另一个优化器似乎不起作用(这不是我期望的那样,但是我也很难找到可以告诉我如何正确设置的资料)。目前,我只是按照以下方式进行了切换,有人可以提示我为什么渐变为0吗?

谢谢!

# Declare optimizer
my_opt = tf.train.GradientDescentOptimizer(0.001)
my_opt = tf.train.AdamOptimizer(epsilon = 0.1)

Histogram of gradients:

enter image description here

Loss function showing that Adam optimizer isn't doing anything: enter image description here

编辑:

我已将学习率提高到更高,但是融合似乎仍然没有那么好。我想我将继续尝试在tensorflow中实现Coordinate Descent,以尽可能接近sci-kit Learn的方法。我为那些好奇的人附上了一张图片:

Red = 0.5, Blue= 0.1, Orange = 0.01

与SGD相比:

enter image description here

0 个答案:

没有答案
相关问题