标签: gradient-descent

有没有可以导入梯度下降函数/方法的 Python 库?

在 Python 中进行梯度下降的一种方法是自己编写代码。然而,考虑到它在机器学习中的流行程度,我想知道是否有一个可以导入的 Python 库可以为我提供梯度下降方法(最好是小批量梯度下降,因为它通常比批量和随机梯度下降更好) ,但如果我错了,请纠正我)。

我检查了 NumPy 和 SciPy 但找不到任何东西。我没有使用 TensorFlow 的经验,但浏览过他们的在线 API。我找到了 tf.train.GradientDescentOptimizer,但没有参数可以让我选择批量大小,所以我对它的实际含义相当模糊。

抱歉,如果我听起来很天真。我正在自学很多这样的东西。

python import gradient-descent tensorflow mini-batch

4
推荐指数
1
解决办法
9590
查看次数

OpenAI 梯度检查点与 Tensorflow Eager Execution

我最近切换到 Tensorflow Eager(目前使用 TF 1.8.0)并且非常喜欢它。但是,我现在有一个相当大的模型,当使用计算 TF 中的梯度所需的渐变磁带运行时,该模型不适合我的 GPU 内存(GTX 1080Ti、12GB VRAM)。前向传递(即不使用渐变带)效果很好。

我考虑过使用OpenAI 的梯度检查点,希望这会有所帮助。然而,简单地按照 Git 中的描述使用它似乎对 Eager Execution 没有帮助,即

import tensorflow as tf
import tensorflow.contrib.eager as tfe
import memory_saving_gradients
tf.__dict__["gradients"] = memory_saving_gradients.gradients_memory
# using gradients_memory or gradients_speed does not change anything
# tf.__dict__["gradients"] = memory_saving_gradients.gradients_speed

[...]
with tfe.GradientTape() as g:
    output = run_large_model()
    loss = calculate_loss_on_output(output)
grads = g.gradient(full, model.variables)
optimizer.apply_gradients(zip(grads, model.variables))
Run Code Online (Sandbox Code Playgroud)

内存不足,与是否使用梯度检查点无关。

我的猜测是,梯度磁带仍然存储所有变量以及向后传递所需的信息,并且梯度检查点没有效果,因为 Eager 模式下的 TF 实际上并没有构建图形(据我所知 - 或者至少它是不同的)图形)。

您是否有任何经验或想法如何解决这个问题,或者我需要做什么才能在 TF Eager 模式下使用梯度检查点?

python gradient-descent tensorflow tensorflow-gradient

4
推荐指数
1
解决办法
1666
查看次数

同时更新 theta0 和 theta1 以计算 python 中的梯度下降

我正在学习 Coursera 的机器学习课程。有一个主题叫梯度下降来优化成本函数。它表示同时更新 theta0 和 theta1,从而最小化成本函数并达到全局最小值。

梯度下降的公式为

在此输入图像描述

我如何使用 python 以编程方式执行此操作?我正在使用 numpy 数组和 pandas 从头开始​​逐步理解其逻辑。

现在我只计算了成本函数

# step 1 - collect our data
data = pd.read_csv("datasets.txt", header=None)

def compute_cost_function(x, y, theta):
    '''
        Taking in a numpy array x, y, theta and generate the cost function
    '''
    m = len(y)
    # formula for prediction = theta0 + theta1.x
    predictions = x.dot(theta)
    # formula for square error = ((theta1.x + theta0) - y)**2
    square_error = (predictions - y)**2
    # sum of square error …
Run Code Online (Sandbox Code Playgroud)

python numpy machine-learning linear-regression gradient-descent

4
推荐指数
1
解决办法
5979
查看次数

什么时候在Matlab中使用矩阵乘法,sum()或for循环有很好的经验法则?

我正在尝试开发用于将方程转换为代码的通用启发式算法.这个特殊的问题解决了如何在Matlab中实现带求和函数的方程.

使用sum()与矩阵乘法的示例:

我实现了这个等式,并认为我需要使用sum()函数:

公式1

J = 1/(2*m) * sum( (X*theta - y).^2 );
Run Code Online (Sandbox Code Playgroud)

然后我实现了这个类似的等式,而不需要使用sum()函数!

方程2

theta = theta - (alpha/m) * ((X*theta - y)'*X)';
Run Code Online (Sandbox Code Playgroud)

哪里:

X: 100x2 (training input plus a 'ones' vector)
y: 100x1 (training output) 
theta:  2x1 (parameters)
m: 100 (length of y)
alpha: 0.01 (learning rate) 
Run Code Online (Sandbox Code Playgroud)

当Matlab的矩阵乘法"处理"求和时,有哪些原理?

谢谢!

matlab matrix gradient-descent

3
推荐指数
1
解决办法
218
查看次数

神经网络迭代,梯度下降步骤,时期,批量大小的含义是什么?

你能解释下面的话,它真的让我很困惑.1.iterations 2.gradient descent steps 3.epoch 4.batch size.

machine-learning neural-network gradient-descent

3
推荐指数
1
解决办法
574
查看次数

在使用caffe进行训练时,为什么"训练净输出"损失和"迭代损失"是相同的?

我正在使用caffe在我自己的数据上训练AlexNet.我看到的一个问题是"训练净输出"损失和"迭代损失"在训练过程中几乎相同.而且,这种损失有波动.喜欢:

...
...Iteration 900, loss 0.649719
...    Train net output #0: loss = 0.649719 (* 1 = 0.649719 loss ) 
...    Iteration 900, lr = 0.001
...Iteration 1000, loss 0.892498
...    Train net output #0: loss = 0.892498 (* 1 = 0.892498 loss ) 
...    Iteration 1000, lr = 0.001
...Iteration 1100, loss 0.550938
...    Train net output #0: loss = 0.550944 (* 1 = 0.550944 loss ) 
...    Iteration 1100, lr = 0.001
...
Run Code Online (Sandbox Code Playgroud)
  1. 我应该看到这种波动吗? …

machine-learning neural-network gradient-descent deep-learning caffe

3
推荐指数
1
解决办法
1379
查看次数

Stochastic Gradient Descent是否适用于TensorFlow?

我设计了一个MLP,完全连接,有2个隐藏和一个输出层.如果我使用批量或小批量梯度下降,我会得到一个很好的学习曲线.

但是在执行随机梯度下降(紫罗兰色)的过程中直线 在此输入图像描述

我弄错了什么?

根据我的理解,我使用Tensorflow进行随机梯度下降,如果我只提供一列火车/学习每个火车步骤的例子,例如:

X = tf.placeholder("float", [None, amountInput],name="Input")
Y = tf.placeholder("float", [None, amountOutput],name="TeachingInput")
...
m, i = sess.run([merged, train_op], feed_dict={X:[input],Y:[label]})
Run Code Online (Sandbox Code Playgroud)

因此输入是10分量矢量,标签是20分量矢量.

对于测试,我运行1000次迭代,每次迭代包含50个准备好的训练/学习示例中的一个.我期待一个overfittet nn.但正如你所见,它没有学习:(

由于nn将在在线学习环境中执行,因此不能选择小批量或批量梯度下降.

谢谢你的任何提示.

gradient-descent tensorflow

3
推荐指数
1
解决办法
1679
查看次数

为什么深NN不能逼近简单的ln(x)函数?

我用两个RELU隐藏层+线性激活层创建了ANN,并试图逼近简单的ln(x)函数.我不能做到这一点.我很困惑,因为x:[0.0-1.0]范围内的lx(x)应该没有问题地近似(我使用学习率0.01和基本梯度下降优化).

import tensorflow as tf
import numpy as np

def GetTargetResult(x):
    curY = np.log(x)
    return curY

# Create model
def multilayer_perceptron(x, weights, biases):
    # Hidden layer with RELU activation
    layer_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1'])
    layer_1 = tf.nn.relu(layer_1)
    # # Hidden layer with RELU activation
    layer_2 = tf.add(tf.matmul(layer_1, weights['h2']), biases['b2'])
    layer_2 = tf.nn.relu(layer_2)

    # Output layer with linear activation
    out_layer = tf.matmul(layer_2, weights['out']) + biases['out']
    return out_layer

# Parameters
learning_rate = 0.01
training_epochs = 10000
batch_size = 50
display_step = 500 …
Run Code Online (Sandbox Code Playgroud)

regression neural-network gradient-descent deep-learning tensorflow

3
推荐指数
1
解决办法
2481
查看次数

在Caffe中创建新图层

我用caffe来深入学习.要为caffe创建一个新图层,我需要

(1)将图层添加到proto/caffe.proto以更新下一个可用ID

(2)通过将图层添加到layer_factory.cpp来创建图层

我的查询是caffe.proto中新目的的用途和layer_factory.cpp中createable的功能.

在layer_factory.cpp中有一些不包含为创建的图层.包含和不包含在layer_factory.cpp中的这些层之间有什么区别.

machine-learning neural-network gradient-descent deep-learning caffe

3
推荐指数
1
解决办法
902
查看次数

PyTorch中的向后功能

我对pytorch的向后功能有些疑问,我认为我没有得到正确的输出

import numpy as np
import torch
from torch.autograd import Variable
a = Variable(torch.FloatTensor([[1,2,3],[4,5,6]]), requires_grad=True) 
out = a * a
out.backward(a)
print(a.grad)
Run Code Online (Sandbox Code Playgroud)

输出是

tensor([[ 2.,  8., 18.],
        [32., 50., 72.]])
Run Code Online (Sandbox Code Playgroud)

也许是 2*a*a

但我认为输出应该是

tensor([[ 2.,  4., 6.],
        [8., 10., 12.]])
Run Code Online (Sandbox Code Playgroud)

2*a. 原因 d(x^2)/dx=2x

machine-learning gradient-descent pytorch autograd

3
推荐指数
1
解决办法
239
查看次数