问题标签 [sgd]

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 投票
2 回答
11168 浏览

tensorflow - TensorFlow 中具有动量的 SGD

在 Caffe 中,SGD 求解器有一个动量参数(链接)。在 TensorFlow 中,我看到它tf.train.GradientDescentOptimizer没有明确的动量参数。但是,我可以看到有tf.train.MomentumOptimizer优化器。它是否相当于带有动量优化器的 Caffe SGD?

0 投票
1 回答
360 浏览

python - 模型使用 SGD 而不是 Adam 学习

我在这里查看了一个基本的 PyTorch MNIST 示例,并注意到当我将优化器从 SGD 更改为 Adam 时,模型没有收敛。具体来说,我将第 106 行从

我认为这对模型没有影响。使用 SGD 后,损失在大约四分之一纪元后迅速下降到低值。然而,对于 Adam,即使经过 10 个 epoch,损失也没有下降。我很好奇为什么会这样;在我看来,这些应该具有几乎相同的性能。

我在 Win10/Py3.6/PyTorch1.01/CUDA9 上运行了这个

为了节省你一点点代码挖掘,这里是超参数:

  • lr=0.01
  • 动量=0.5
  • 批量大小=64
0 投票
1 回答
110 浏览

gradient-descent - 对数回归损失的梯度

我正在尝试为日志回归编写小批量梯度下降。

$\nabla L = - \sum_{i=1}^{m} (y_i - \sigma(\left<w,x_i\right>)):x_i$

给定 numpy 矩阵X_batch(形状(n_samples, n_features))和y_batch(形状(n_samples,))。

天真的方法是写循环:

但似乎使用循环在速度方面是个坏主意。还有更好的方法吗?没有循环的纯numpy?以某种方式重写渐变表达式?

0 投票
0 回答
42 浏览

python - 我的 ANN 有时会忽略一个类,可能的解决方案

我的 ANN 有两个输入和 16 个输出,有时它会忽略一些类,即使我的数据集按类具有几乎相同数量的示例,正​​如您在这张图片中看到的那样:第 3 行第 4 列中的点被简单地忽略,它是即使我改变隐藏层、隐藏节点或训练示例的数量,也很常见。

我对网络进行了很多次训练,并且它随机工作,如下图所示:您可以在这里看到 16 个类中的每一个都被成功分类。

在这两种情况下,我都使用一个具有 32 个隐藏节点的隐藏层,10000 个训练示例,使用随机梯度下降和 k 折验证。我无法实现正则化,但这个问题看起来并没有过度拟合。

我只想知道是否有办法强制神经网络使用everyclass 进行分类,或者我的网络是否有问题。我试着用谷歌搜索它,但没有找到类似的东西。谢谢,如果需要任何其他信息,请询问。

0 投票
1 回答
517 浏览

machine-learning - 值错误:训练折叠中只有 2 个类/es,但整个数据集中有 1 个。具有不平衡折叠的决策函数不支持此功能

我正在学习机器学习并在#mnist 数据集上创建我的第一个模型。

有人可以帮我吗?我已经尝试了 Stratified Fold、kfold 和其他方法来解决这个问题。

Pandas 版本 '0.25.1',Python 版本 3.7,使用 Anaconda 发行版。

代码块的最后一行给出了错误:

0 投票
1 回答
37 浏览

python - SGD optimiser graph

I just wanted to ask a quick question. I understand that val_loss and train_loss is insufficient to tell if the model is overfitting. However, i wish to use it as a rough gauge by monitoring if the val_loss is increasing. As i use SGD optimiser, i seem to have 2 different trends based on the smoothing value. Which should i use? Blue is val_loss and Orange is train_loss.

From smoothing = 0.999, both seems to be decreasing but from smoothing = 0.927, val_loss seems to be increasing. Thank you for reading!

Also, when is a good time to decrease the learning rate? Is it directly before the model overfits?

Smoothing = 0.999

Smoothing = 0.927

0 投票
1 回答
251 浏览

java - NaN 通过矩阵分解

我使用 SGD 算法实现了矩阵分解,但是当我运行它时,我经常在预测矩阵中得到 NaN。当我在一个非常小的 (6 x 7) 矩阵上运行算法时,错误出现的次数很少。当我转移到电影镜头数据集时,每次运行算法时我都会在所有单元格中得到错误。错误仅在某些单元格中消失的唯一时间是当我将优化步骤(迭代次数)设置为 1 时。

相关方法如下:

是什么导致错误,因为我没有在算法中除以零?我该如何解决?

PS我正在使用通用矩阵库包

0 投票
1 回答
231 浏览

machine-learning - 在 epoch 结束时,CNN 训练损失有规律的峰值

我正在与 Adam 在 PyTorch 中训练 CNN,初始学习率为 1e-5。我的 epoch 中有 5039 个样本,batch size 为 1。我观察到,在一个 epoch 结束时,我有一个规律的训练损失峰值模式。这是训练损失的图: 在此处输入图像描述

从图中可以看到清晰的尖峰模式,这些尖峰恰好发生在时代结束时。我的时代包含 5039 个样本。有趣的是,尖刺不仅会击落,有时还会向上击落。

我不认为是:

  • 如果没有对数据集进行洗牌,这些峰值可能会得到解释。但是,我在每个时期都对我的数据集进行洗牌。

  • 当 epoch 的最终批次小于其他批次时会发生这种行为,这会导致不同程度的损失(为什么我的训练损失有规律的尖峰?)。但是,这不是我的情况,因为我的批量大小是 1。

一种潜在的技巧可能是在更新步骤之前应用渐变裁剪。但是,对我来说,这似乎不是处理这个问题的好方法。

  1. 您对这种峰值模式的原因有何看法?
  2. 有这样的模式有多糟糕?
0 投票
1 回答
325 浏览

probability - 使用 SGDclassifier 的 predict_proba 进行多类分类的多类分类置信度得分

我在 SGDClassifier 中使用逻辑回归来执行 ~10k 类别的多类分类。为了获得预测结果的置信度分数,我使用了 predict_proba 函数。但是对于正确和错误的预测,我得到的预测概率值为 0.00026091,0.00049697,0.00019632。

请提出标准化分数的方法,以便我可以通过过滤概率值来考虑结果

0 投票
1 回答
79 浏览

training-data - 了解 CNN 训练结果

我将不胜感激您对以下内容的解释:)

我训练了分类两个图像类的 CNN 网络。我使用了“SGD”优化器和“categorical_crossentropy”损失函数。

我的结果如下: - 训练损失 = 0.28 - 训练准确度 = 0.93 - 验证损失 = 0.38 - 验证准确度 = 0.82

所以很明显模型“过拟合”了一点(有人说有点过拟合有时很好)。

我的问题集中在验证损失和验证准确性上。

我的网络是 38% 不准确还是 82% 准确?我读过很多关于验证损失和验证准确性的文章,人们说:

“与准确性不同,损失不是百分比。它是训练或验证集中每个示例所犯错误的总和。

但我仍然不能直观地理解结果(38% 不准确或 82% 准确)。

非常感谢!:)

伊万