问题标签 [stochastic-gradient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
352 浏览

tensorflow - Keras SGD Optimizer 的“get_updates”方法中当前批次的前向传递计算

我正在尝试在 Keras SGD 优化器的 get_gradient 方法中实现随机 armijo 规则。因此,我需要计算另一个前向传递来检查所选择的 learning_rate 是否良好。我不想再次计算梯度,但我想使用更新后的权重。

使用 Keras 版本 2.3.1 和 Tensorflow 版本 1.14.0

不幸的是,我在尝试计算“loss_next”时不理解错误消息:

这里有两个问题:

  • 如何访问我正在处理的当前批次?前向计算应该只考虑实际的批次,因为梯度也只属于那个批次。

  • 有什么更好的想法不使用 K.function 来更新和评估前向传递来计算该批次的损失函数?

有谁能帮忙吗?提前致谢。

0 投票
1 回答
285 浏览

python-3.x - 从零开始在 Python 中实现随机梯度下降。实施是否正确?

我知道这看起来与之前就同一主题提出的许多问题相似。我对他们中的大多数人进行了调查,但他们并没有完全回答我的问题。我的问题是我的梯度没有收敛到最优值,它甚至在非常低的 alpha 值下发散和振荡。

我的数据生成功能如下

我的 SGD 实现如下

超参数如下

我不认为这是一个数据问题。我使用的是一个相当简单的线性函数。

我认为这是方程式,但我也仔细检查了它们,它们对我来说似乎很好。

0 投票
1 回答
36 浏览

python - python中多个向量的随机抽样

所以我有一个任务来编码随机梯度体面,基本上我发现从多个向量中随机采样同时保持顺序不变有点问题。我的代码如下:

正如你所看到的,我有 2 个向量,x 和 y,它们是链接的,例如 x[0] 是一个实验,它给了我们 y[0] = 0。在我看来,没有结构的随机抽样是没有意义的. 我正在努力做的是在 SGD 函数中,我想要 x 的 n 点和 y 的 n 点,但结构正确!任何帮助表示赞赏!

0 投票
2 回答
41 浏览

python - 为什么我在随机梯度下降实施中付出了巨大的代价?

我在尝试实现随机梯度下降时遇到了一些问题,基本上正在发生的事情是我的成本正在疯狂增长,我不知道为什么。

MSE实施:

渐变:

新元实施:

随机变量:

运行后:

我明白了:

这是情节

0 投票
1 回答
296 浏览

neural-network - 在带有 Pytorch 的 MNIST 数据集上使用 SGD,损失没有减少

我尝试在批量大小为 32 的 MNIST 数据集上使用 SGD,但损失根本没有减少。我检查了我的模型、损失函数并阅读了文档,但无法弄清楚我做错了什么。

我将我的神经网络定义如下

我将我的培训过程定义如下

我正在使用带有 LogSoftmax 层的模型,所以我的损失函数似乎是正确的。但是损失一点也没有减少。

0 投票
1 回答
57 浏览

python - 如何使随机梯度回归器运行多达 1000 个 epoch 或产生更好的结果?

我正在运行 sklearn ( docs ) 的随机梯度回归器。

以下是我使用的参数:

不幸的是,我的时代没有达到 2000。我知道我设置了如果它在 15 次运行后发生变化,它应该终止,我怎样才能更好地使用随机梯度?因为最终的验证不是很令人印象深刻。

0 投票
0 回答
25 浏览

python - 在更新 dict 值时累积变量?(尝试实现SGD+动量)

所以我为香草 SGD 实现了以下字典:

我正在尝试用动量实现类似的东西,但是,我不确定如何能够累积速度项,以便我可以在列表理解术语中一次更新它:

有谁知道我如何使用列表理解(最好使用 Tensorflow)来做到这一点?

0 投票
0 回答
25 浏览

python - python中的简单NN不起作用,可能是反向传播算法的问题?

我尝试使用具有 2 个输入、2 个隐藏神经元、1 个输出神经元(使用随机梯度下降)的 NN 编写经典 XOR 问题。但是无论我做什么,我的神经网络都不能正常工作,仍然得到错误的输出,我真的不知道问题出在哪里,我认为在反向传播中,也许我以错误的顺序乘以它,我真的不知道。我用于更新输出权重的公式是 LEARING_RATE * ERROR * (OUTPUT * (1 - OUTPUT) * HIDDEN_OUTPUT.T,隐藏权重的公式是 LEARING_RATE * HIDDEN_ERROR * (HIDDEN_OUTPUT * (1 - HIDDEN_OUTPUT) * INPUT。我会想知道我的代码中的问题出在哪里,如果您能提供任何帮助,我将不胜感激:)

0 投票
1 回答
276 浏览

python - SGD 分类器 Precision-Recall 曲线

我正在研究一个二进制分类问题,我有一个像这样的 sgd 分类器:

我将它安装在我的训练集上并绘制了精确召回曲线:

在此处输入图像描述

鉴于 scikit-learn 中的 sgd 分类器loss="hinge"默认使用,如何绘制这条曲线?我的理解是 sgd 的输出不是概率的——要么是 1/0。因此没有“阈值”,但是 sklearn 精确召回曲线绘制了具有不同阈值的锯齿形图。这里发生了什么?

0 投票
1 回答
500 浏览

python - 使用 SGD 而不使用 sklearn 实现具有 Logloss 和 L2 正则化的 SGD 分类器

初始化权重

计算 sigmoid

计算对数损失

计算梯度wrt w

计算梯度wrt b

实施逻辑回归

绘制纪元数与训练,测试损失

绘制 epoch 与 train_loss/test_loss 时出错

我对逻辑回归的代码感到困惑,如果它正确,那么我应该如何绘制 epoch vs train_loss/test_loss。对于每个时代都应该有一个损失,并且不知道我应该在我的代码中进行哪些更改来绘制它。