gradient-descent相关内容
我正在阅读PyTorch的文档,并找到了他们编写的示例 gradients = torch.FloatTensor([0.1, 1.0, 0.0001]) y.backward(gradients) print(x.grad) 其中x是初始变量,从中构造y(3矢量).问题是,梯度张量的0.1、1.0和0.0001参数是什么?该文档对此不太清楚. 解决方案 我在PyTorch网
..
我正在尝试实现一个将图像分类为两个离散类别之一的神经网络.但是问题是,当前它始终为任何输入预测0,但我不确定为什么. 这是我的特征提取方法: def extract(file): # Resize and subtract mean pixel img = cv2.resize(cv2.imread(file), (224, 224)).astype(np.float3
..
我想在python中编写一个TensorFlow op,但是我希望它是可区分的(能够计算梯度). 此问题询问如何在python中编写op,并且答案建议使用py_func(不具有渐变): TF文档描述了如何仅从C ++代码开始添加操作:就我而言,我正在制作原型,所以我不在乎它是否可以在GPU上运行,也不在乎它是否可以从TF python API之外的任何其他功能使用. 解决方案 是的,
..
仅出于上下文考虑,我正在尝试使用Tensorflow实现梯度下降算法. 我有一个矩阵X [ x1 x2 x3 x4 ] [ x5 x6 x7 x8 ] 我将其乘以某些特征向量Y以获得Z [ y1 ] Z = X [ y2 ] = [ z1 ] [ y3 ] [ z2 ] [ y4 ] 然后我将Z通过softmax函数放置,并获取
..
我正在Matlab上实现批量梯度下降.我在theta的更新步骤中遇到问题. theta是两个分量(两行)的向量. X是一个包含m行(训练样本数)和n=2列(特征数)的矩阵. Y是m行向量. 在更新步骤中,我需要将每个theta(i)设置为 theta(i) = theta(i) - (alpha/m)*sum((X*theta-y).*X(:,i)) 这可以通过for循环来完成,但
..
代码来自: https://github. com/torch/nn/blob/master/lib/THNN/generic/LogSoftMax.c 我看不到这段代码如何计算到LogSoftMax模块输入的梯度w.r.t.我很困惑的是两个for循环在做什么. for (t = 0; t
..
为我的最后一年的项目编写此算法.调试了一些,但是坚持了下来.尝试更改float方法,但没有真正改变. ----> 8 hypothesis = np.dot(float(x), theta) TypeError: only length-1 arrays can be converted to Python scalars 完整代码- import numpy as
..
为我的最后一年的项目编写此算法.使用梯度下降法找到最小值,但代价却高达无穷大. 我已经检查了 gradientDescent 函数.我相信那是正确的. 我正在导入的csv及其格式导致某些错误. CSV中的数据具有以下格式. "|"之前的每个四边形是一行. 前3列是自变量x. 第四列与y相关. 600 20 0.5 0.63 | 600 20 1 1.5 | 800 2
..
我正在阅读python的深度学习书. 在阅读了第4章,抗击过度拟合之后,我有两个问题. 为什么增加时期数会导致过度拟合? 我知道增加纪元数会涉及到更多的梯度下降尝试,这会导致过度拟合吗? 在过度拟合过程中,准确性会降低吗? 解决方案 我不确定您正在阅读哪本书,因此在我专门回答问题之前,一些背景信息可能会有所帮助. 首先,增加时期数并不一定会导致过度拟合,但确实可以.如果学
..
我已经看过“> 吴安国(Andrew Ng)视频 一遍又一遍,但我仍然不明白如何将梯度下降应用于我的问题. 他几乎只从事高级概念解释领域的工作,但我需要的是战术方面的基础知识. 我的输入是以下形式的特征向量: 示例: Document 1 = ["I", "am", "awesome"] Document 2 = ["I", "am", "great", "great"]
..
使用反向传播演算中的符号|深度学习,第4章,我有一个用于4层(即2个隐藏层)神经网络的反向传播代码: def sigmoid_prime(z): return z * (1-z) # because σ'(x) = σ(x) (1 - σ(x)) def train(self, input_vector, target_vector): a = np.array(inp
..
我已经使用矢量化实现了以下用于梯度下降的代码,但是代价函数似乎并没有正确地递减.相反,代价函数会随着每次迭代的增加而增加. 假设theta为n + 1个向量,y为m个向量,X为设计矩阵m *(n + 1) function [theta, J_history] = gradientDescent(X, y, theta, alpha, num_iters) m = length(y)
..
我想从 Adam 切换到 SGD .如何顺利进行操作,以便将权重/梯度传递给新的优化器? 解决方案 只需定义两个优化器并在它们之间切换: sgd_optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost) adap_optimizer = tf.train.AdamOptimizer(lear
..
我试图使用Hermite多项式用pytorch训练一个简单的多项式线性模型,因为它们似乎具有更好的条件的Hessian. 为此,我决定使用 hermvander ,因为它给出了Vandermonde矩阵,每个条目都是Hermite术语.为此,我只是使特征向量成为hermvander的输出: Kern_train = hermvander(X_train,Degree_mdl) 但是
..
我正在matlab中对多个变量进行梯度下降,并且代码未获得正常等式所得到的预期theta.那是: θ= 1.0e + 05 * 3.4041 1.1063 -0.0665 与普通等式.我已经执行了. 使用GDM,我得到的结果是: θ= 1.0e + 05 * 2.6618 -2.6718 -0.5954 而且我不明白为什么会这样,也许有人可以帮助我,告诉我代码中的错误在哪里. 代码:
..
我刚刚开始学习深度学习.当涉及到梯度下降时,我发现自己陷于困境.我知道如何实现批量梯度下降.我知道它的工作原理以及理论上的小批量和随机梯度下降的工作原理.但是真的不明白如何在代码中实现. import numpy as np X = np.array([ [0,0,1],[0,1,1],[1,0,1],[1,1,1] ]) y = np.array([[0,1,1,0]]).T alpha,
..
我试图在MNIST手写数字数据集(包括60K训练样本)上训练前馈神经网络. 我每次迭代所有训练样本,并在每个时期对每个这样的样本执行反向传播.运行时间当然太长了. 我运行的算法是否命名为 Gradient Descent ? 我了解到,对于大型数据集,使用随机梯度下降可以显着改善运行时间. 我该怎么做才能使用随机梯度下降?我是否应该随机选择训练样本,对每个随机选择的样本执行
..
我上周开始学习机器学习.当我想制作一个梯度下降脚本来估计模型参数时,遇到一个问题:如何选择合适的学习率和方差.我发现,不同的(学习率,方差)对可能导致不同的结果,有些甚至你无法融合.另外,如果更改为另一个训练数据集,那么选择正确的(学习率,方差)对可能不起作用.例如(下面的脚本),当我将学习率设置为0.001,方差设置为0.00001时,对于"data1",我可以获得合适的theta0_guess
..
我了解Gradient Descent的作用.基本上,它试图通过缓慢地沿着曲线向下移动来朝向局部最优解.我试图了解平面梯度下降与牛顿法之间的实际区别是什么? 在Wikipedia上,我读到了这句话:“牛顿法使用曲率信息采取更直接的路线."这凭直觉是什么意思? 解决方案 在局部最小值(或最大值)x处,目标函数f的导数消失:f'(x) = 0(假定). 梯度下降尝试通过使用来自f的
..
我想知道如果我有一个生成底部斑点的层,该斑点会被随后的两个后续层进一步消耗,这两个层都会在向后传播阶段生成一些渐变以填充bottom.diff.是否将两个梯度加起来形成最终的梯度?还是只有其中一个可以生存?以我的理解,Caffe层需要先将bottom.diff设置为全零,然后再填充一些计算出的渐变,对吗? memset会否清除另一层已经计算出的渐变?谢谢! 解决方案 使用一个以上的损失层并
..