草庐IT

python - 我的 LSTM 学习,损失减少,但数值梯度与分析梯度不匹配

以下是自包含,当您运行它时,它将:1.打印损失以验证它正在减少(学习sin波),2.对照我的手推梯度函数检查数值梯度。这两个梯度倾向于在1e-1到1e-2内匹配(这仍然很糟糕,但表明它正在尝试)并且偶尔会出现极端异常值。我整个星期六都在退回到正常的FFNN,让它工作(耶,梯度匹配!),现在星期天在这个LSTM上,好吧,我找不到我逻辑中的错误。哦,这在很大程度上取决于我的随机种子,有时很好,有时很糟糕。我已经根据LSTM方程的手推导数(我做了微积分)和这3个博客/要点中的实现手工检查了我的实现:http://blog.varunajayasiri.com/numpy_lstm.htmlh

python - 只能使用 TensorFlow 中处理梯度的代码示例来实现类似优化器的梯度下降吗?

我正在查看TensorFlow具有的用于处理梯度的示例代码:#Createanoptimizer.opt=GradientDescentOptimizer(learning_rate=0.1)#Computethegradientsforalistofvariables.grads_and_vars=opt.compute_gradients(loss,)#grads_and_varsisalistoftuples(gradient,variable).Dowhateveryou#needtothe'gradient'part,forexamplecapthem,etc.capped_

python - 我如何判断 tf op 是否具有梯度?

我有兴趣在tensorflow中使用SparseTensor,但是,我经常得到LookupError:Nogradientdefinedforoperation...显然,对于稀疏张量的许多操作都没有定义梯度计算。在实际编写和运行我的代码之前,是否有任何简单的方法来检查操作是否具有梯度? 最佳答案 在tensorflow.python.framework.ops中有一个get_gradient_function函数。它接受一个操作并返回相应的梯度操作。示例:importtensorflowastffromtensorflow.pyt

python - 梯度下降的代码在哪里?

用TensorFlow运行一些实验,想看看一些功能的实现,只是为了确切地了解一些事情是如何完成的,从tf.train.GradientDescentOptimizer的简单案例开始。从github下载了完整源代码的zip,对源代码树进行了一些搜索,找到了:C:\tensorflow-master\tensorflow\python\training\gradient_descent.pyclassGradientDescentOptimizer(optimizer.Optimizer):def_apply_dense(self,grad,var):returntraining_ops.

python - Scikit-learn:并行化随机梯度下降

我有一个相当大的训练矩阵(超过10亿行,每行两个特征)。有两个类(0和1)。这对于一台机器来说太大了,但幸运的是我有大约200个MPI主机可供我使用。每个都是适度的双核工作站。特征生成已经成功分发。Multiprocessingscikit-learn中的答案建议可以分配SGDClassifier的工作:Youcandistributethedatasetsacrosscores,dopartial_fit,gettheweightvectors,averagethem,distributethemtotheestimators,dopartialfitagain.当我在每个估算器上第

python - keras中的全梯度下降

我正在尝试在keras中实现全梯度下降。这意味着对于每个时期,我都在整个数据集上进行训练。这就是批量大小定义为训练集长度大小的原因。fromkeras.modelsimportSequentialfromkeras.layersimportDensefromkeras.optimizersimportSGD,Adamfromkerasimportregularizersimportnumpyasnpimportmatplotlib.pyplotasplt%matplotlibinlineimportrandomfromnumpy.randomimportseedimportrandom

python - 有没有一种矢量化的方法来计算 sympy 中的梯度?

如何在sympy中计算多元函数的(符号)梯度?显然我可以分别计算每个变量的导数,但是是否有矢量化运算可以做到这一点?例如m=sympy.Matrix(sympy.symbols('abcd'))现在对于i=0..3我可以这样做:sympy.diff(np.sum(m*m.T),m[i])这会起作用,但我宁愿做类似的事情:sympy.diff(np.sum(m*m.T),m)这不起作用(“AttributeError:ImmutableMatrix没有属性_diff_wrt”)。 最佳答案 只需对m使用列表理解:[sympy.diff

python - 梯度下降算法中如何确定学习率和方差?

我上周开始学习机器学习。当我想制作一个梯度下降脚本来估计模型参数时,我遇到了一个问题:如何选择合适的学习率和方差。我发现,不同的(学习率,方差)对可能会导致不同的结果,一些有时你甚至无法收敛。此外,如果更改为另一个训练数据集,精心选择的(学习率,方差)对可能无法正常工作。例如(下面的脚本),当我将学习率设置为0.001并将方差设置为0.00001时,对于'data1',我可以获得合适的theta0_guess和theta1_guess。但是对于‘data2’,他们无法使算法收敛,即使我尝试了几十个(学习率,方差)对仍然无法收敛。所以如果有人能告诉我是否有一些标准或方法来确定(学习率,方

python - numpy 梯度函数和数值导数

numpy.gradient函数返回的数组取决于数据点的数量/数据点的间距。这是预期的行为吗?例如:y=lambdax:xx1=np.arange(0,10,1)x2=np.arange(0,10,0.1)x3=np.arange(0,10,0.01)plt.plot(x1,np.gradient(y(x1)),'r--o')plt.plot(x2,np.gradient(y(x2)),'b--o')plt.plot(x3,np.gradient(y(x3)),'g--o')返回阴谋。只有y(x1)的梯度返回正确的结果。这里发生了什么?有没有更好的方法使用numpy计算数值导数?干杯

最优化问题中步长越大、收敛速度越快,梯度下降算法数十年的传统思路被打破

在机器学习的世界中,最优化问题非常重要,它们能使世界变得更好。最优化问题旨在寻求完成某件事情的最佳方式,比如手机GPS计算达到目的地的最短路线,旅游网站搜索与行程相匹配的最便宜的航班。同时,机器学习应用通过分析数据模式进行学习,并试图为任何给定的最优化问题提供最准确和最人性化的答案。对于简单的最优化问题,找到最佳解决方案只是一个算术问题。1847年,法国数学家奥古斯丁-路易・柯西(Augustin-LouisCauchy)研究了一个相当复杂的例子——天文计算。在那时他开创了一种常见的优化方法,也就是现在的梯度下降,它是优化方法中最经典和最简单的一阶方法之一。如今,得益于其较低复杂度和简单操作,