Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 拟合Keras-L1模型_Python_Tensorflow_Keras - Fatal编程技术网

Python 拟合Keras-L1模型

Python 拟合Keras-L1模型,python,tensorflow,keras,Python,Tensorflow,Keras,我有一个简单的keras模型(普通套索线性模型),其中输入被移动到单个“神经元”密集(1,内核正则化器=l1(fdr))(输入层),但该模型的权重从未精确设置为零。我觉得这很有趣,因为scikit learn的套索可以将系数精确设置为零 我使用了Adam和tensorflow的FtrlOptimizer进行优化,它们也有同样的问题 我已经检查过了,但这并不能解释为什么sklearn可以将值精确设置为零,更不用说当Keras中的同一个模型需要2.4秒提前终止时,他们的模型如何在我的服务器上以~50

我有一个简单的keras模型(普通套索线性模型),其中输入被移动到单个“神经元”
密集(1,内核正则化器=l1(fdr))(输入层)
,但该模型的权重从未精确设置为零。我觉得这很有趣,因为scikit learn的套索可以将系数精确设置为零

我使用了
Adam
和tensorflow的
FtrlOptimizer
进行优化,它们也有同样的问题

我已经检查过了,但这并不能解释为什么sklearn可以将值精确设置为零,更不用说当Keras中的同一个模型需要2.4秒提前终止时,他们的模型如何在我的服务器上以~500毫秒的速度收敛

这都是因为使用了优化器,还是我遗漏了什么

这都是因为使用了优化器还是我丢失了优化器 什么

的确如此。如果您查看scikit learn(从
ElasticNet
类调用)中的实际安装时间
Lasso
,您会发现它使用了不同的优化算法

在scikit learn的ElasticNet中协调下降,然后考虑一次添加一个非零条目(这与线性回归的逐步特征选择有关)

用于优化L1正则化回归的其他方法也以这种方式工作:例如(最小角度回归)也可以从scikit学习中使用

与此相反,一种算法说

不幸的是,OGD在生产方面并不是特别有效 稀疏模型。实际上,只需添加一个次梯度 L1罚金与损失梯度(Ow`t(w))之比 从本质上讲,将永远不会产生完全相同的系数 零


我知道这一点,这就是为什么我特别将权重初始化为零,并使用tensorflow的
FtrlOptimizer
,这是一种坐标下降算法(据我所知)。我相应地编辑了我的答案-这篇论文链接在
FtrlOptimizer
的tf文档中……你完全正确,回想起来,这似乎是个愚蠢的问题。现在我已经写了一个FISTA Optimizer之类的东西:(@SARose实际上我认为这是一个非常好的问题-我直觉地感觉到了答案,但我必须检查scikit学习代码以确保我是正确的。而且我以前也不确定sklearn的套索在内部到底使用了什么。