草庐IT

python - 当你想计算梯度和目标函数时,如何使用 scipy.optimize.minimize 函数?

scipy.optimize.minimze将obj和jac函数作为输入。我相信它会在需要时分别调用它们。但我们经常会遇到目标函数,其梯度计算与目标函数共享大量计算。所以理想情况下,我想同时计算obj和grad。但是这个库好像不是这样的?如果有scipy.optimize.minimze如果有的话,有什么办法处理? 最佳答案 你完全可以。只需使用jac=True:In[1]:importnumpyasnpIn[2]:fromscipy.optimizeimportminimizeIn[3]:deff_and_grad(x):...:

python - PyTorch 线性代数梯度

我希望通过奇异值分解反向传播梯度以实现正则化。PyTorch目前不支持通过奇异值分解进行反向传播。我知道我可以编写自己的自定义函数来对变量进行操作;获取它的.data张量,将torch.svd应用于它,将一个变量包裹在它的奇异值周围并在正向传递中返回它,并在反向传递中将适当的雅可比矩阵应用于传入的梯度。但是,我想知道是否有更优雅(并且可能更快)的解决方案,我可以直接覆盖“TypeVariabledoesn'timplementstatelessmethodsvd”错误,调用Lapack等?如果有人可以指导我完成我需要查看的适当步骤和源文件,我将不胜感激。我想这些步骤同样适用于目前没有相

python - 如何创建一个简单的梯度下降算法

我正在研究简单的机器学习算法,从简单的梯度下降开始,但我在尝试用Python实现它时遇到了一些麻烦。这是我要重现的示例,我有关于房屋的数据(居住面积(以英尺2为单位)和卧室数量)以及最终价格:居住面积(英尺2):2104#卧室:3价格(1000$s):400我正在尝试使用梯度下降法进行简单回归,但我的算法不起作用...该算法的形式不是故意使用向量(我试图逐步理解它)。i=1importsysderror=sys.maxinterror=0step=0.0001dthresh=0.1importrandomtheta1=random.random()theta2=random.rando

python - 使用 scikit 学习 (sklearn) 的批量梯度下降

我正在玩一个使用Scikit-Learn(sklearn)的一对一逻辑回归分类器。我有一个大型数据集,它太慢而无法一次性运行;随着培训的进行,我也想研究学习曲线。我想使用批量梯度下降来分批训练我的分类器,例如500个样本。有什么方法可以使用sklearn来做到这一点,还是我应该放弃sklearn并“自己动手”?这是我目前所拥有的:fromsklearn.linear_modelimportLogisticRegressionfromsklearn.multiclassimportOneVsRestClassifier#xsaresubsetsofmytrainingdata,ysare

python - 用python计算梯度

我想知道numpy.gradient是如何工作的。我使用梯度来尝试计算群速度(波包的群速度是频率相对于波数的导数,而不是一组速度)。我给它提供了一个3列数组,前两列是x和y坐标,第三列是该点(x,y)的频率。我需要计算梯度,我确实期望一个2d向量,梯度定义df/dx*i+df/dy*j+df/dz*k我的函数只是x和y的函数,我确实期待类似的东西df/dx*i+df/dy*j但是我得到了2个数组,每个数组有3个列,即2个3d向量;起初我以为两者的总和会给我我正在搜索的向量,但z分量不会消失。我希望我的解释已经足够清楚了。我想知道numpy.gradient是如何工作的,以及它是否适合我

python - SVM 损失函数的梯度

我正在研究this卷积神经网络类。我一直在尝试为svm实现损失函数的梯度,并且(我有解决方案的副本)我无法理解为什么解决方案是正确的。关于thispage它定义损失函数的梯度如下:在我的代码中,当在代码中实现时,我的分析梯度与数字梯度匹配,如下所示:dW=np.zeros(W.shape)#initializethegradientaszero#computethelossandthegradientnum_classes=W.shape[1]num_train=X.shape[0]loss=0.0foriinxrange(num_train):scores=X[i].dot(W)co

python - 噪声数据中的梯度,python

我有来自宇宙射线探测器的能谱。光谱遵循指数曲线,但其中会有宽(可能非常小)的肿block。显然,数据包含噪声元素。我正在尝试平滑数据,然后绘制其梯度。到目前为止,我一直在使用scipysline函数对其进行平滑处理,然后使用np.gradient()。从图中可以看出,梯度函数的方法是找出每个点之间的差异,并没有很清楚地表现出block状。我基本上需要一个平滑的梯度图。任何帮助都会很棒!我试过两种样条方法:defsmooth_data(y,x,factor):print"smoothingdatabyinterpolation..."xnew=np.linspace(min(x),max

python - 如何使用 Python 计算图像的梯度

我想知道如何使用Python来计算图像的梯度。梯度包括x和y方向。我想获得图像的x梯度图和图像的y梯度图。谁能告诉我该怎么做?谢谢~ 最佳答案 我想你的意思是:importnumpyasnpfromscipyimportndimageimportmatplotlib.pyplotasplt#Createablackimageimg=np.zeros((640,480))#...andmakeawhiterectangleinitimg[100:-100,80:-80]=1#Seehowitlooksplt.imshow(img,cm

python - Python 中的图像梯度矢量场

我正在尝试获取GradientVectorField使用Python处理图像(类似于thismatlabquestion)。这是原图:这是我的代码:importnumpyasnpimportmatplotlib.pyplotaspltimportImagefromPILimportImageFilterI=Image.open('test.png').transpose(Image.FLIP_TOP_BOTTOM)I=I.filter(ImageFilter.BLUR)p=np.asarray(I)w,h=I.sizey,x=np.mgrid[0:h:500j,0:w:500j]dy,

python - 在 Theano 中定义关于子张量的梯度

从概念上讲,我有一个关于Theano的简单问题,但我一直无法找到答案(尽管学习了很多小时的教程,但我要坦白地说,我并不真正理解共享变量在Theano中的工作原理)。我正在尝试实现“反卷积网络”;具体来说,我有一个3张量的输入(每个输入都是一个2D图像)和一个4张量的代码;对于第i个输入codes[i]表示一组代码字,它们一起对输入i进行编码。我在弄清楚如何对代码字进行梯度下降方面遇到了很多麻烦。以下是我的代码的相关部分:idx=T.lscalar()pre_loss_conv=conv2d(input=codes[idx].dimshuffle('x',0,1,2),filters=d