问题标签 [mini-batch]
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.
python - PyTorch minibatch 训练非常慢
在成人收入数据集上训练我的模型并使用小批量训练时,无论我使用 PyTorch 的 DataLoader 还是小批量训练的基本实现,训练都非常慢。我的代码有问题,还是有其他方法可以加快成人收入数据集的训练速度?我想使用 one-hot 编码和交叉熵损失 + softmax。我是否必须使用不同的损失函数或删除 softmax 层?
python - 如何正确实现动量和衰减 - SGD
我正在尝试将动量和衰减应用于小批量 SGD:更新权重的正确方法是什么,一旦设置衰减,我就会得到奇怪的结果。
pytorch - 使用小批量时累积的 pytorch 损失
我是pytorch的新手。请问添加'loss.item()'有什么区别?以下2部分代码:
还有这个
如果有人有任何想法,请提供帮助。非常感谢你。
python - 小批量梯度下降梯度在几个时期后爆炸
我正在训练一个小批量梯度下降模型,以便与大约 0.00016 的直接解 rmse 收敛。有效数据集(函数中的 rmse_valid_array)的 RMSE 的输出在第一个时期很好,但是在几个时期之后,它开始爆炸,我已经为此苦苦挣扎了好几天,算法似乎很好,其中可能是问题吗?
PS x_train的shape为(11000, 41),y_train的shape为(11000, 1),这里的batch size为1,学习率为0.001。我将权重初始化为非常小(除以 1000)。我检查了 X_mini 和 y_mini 是正常的,并且在几个 epoch 之后 graident 开始爆炸。
当我将梯度计算从1/len(y)
(每个批次的大小)更改为1/m
(整个训练集的大小)时,每个 epoch 的 rmse 确实变小了,但不像 Andrew Ng 在他的迷你批次讲座中提到的那样趋势。
这是进行小批量的主要功能
辅助函数创建小批量和 rmse 如下
gradient-descent - 需要帮助查找小批量梯度下降实现中的逻辑错误(协同过滤)
我正在尝试实现小批量梯度下降,以便在给定 cust_id、item_id 和评级的情况下进行预测。
我已将效用矩阵(用户 x 项)分解为用户特征矩阵和项特征矩阵。这里的特征是指潜在特征。但是我得到了项目特征矩阵的巨大价值(在第一个时代本身的 e^140 范围内!!)
据我了解相同的算法,它是这样的 -
对于每个时期 {
对于所有迭代(迭代不是 1 个 epoch 中的批次){
更新项目特征矩阵
更新用户特征矩阵
}
检查 RMSE
}
实施失败的可能原因——
- 我怀疑我计算项目特征矩阵的逻辑是错误的
- 矢量化逻辑错误
我遵循了以下资源-
1.https://www.youtube.com/watch?v=4qJaSmvhxi8
这是我的实现的 google colab 链接-
https://colab.research.google.com/drive/1eSuyH7d97ppuDsxlv4EhWmTF1muCkHE5?usp=sharing
如果有人可以帮助我弄清楚我在这里做错了什么,那将有很大帮助。
bayesian - 使用小批量吉布斯采样时如何纠正偏差
在最近发表的 JASA 论文https://www.tandfonline.com/doi/pdf/10.1080/01621459.2020.1782222?needAccess=true中,作者提出了一种 minibatch Metropolis-Hastings 算法。这个想法是在计算接受率时添加一个校正项,以便通过使用小批量数据来校正引入的偏差。这个想法是基于这篇论文https://arxiv.org/pdf/1707.09705.pdf。这两篇论文都证明了基于他们的算法,MCMC链将近似收敛到回火后验。
如果我们将 Gibbs 抽样视为 Metropolis-Hastings 的一个特例,我正在考虑将这个想法应用于 Gibbs 抽样。问题是在这两篇论文中,他们只需要在对数似然项上添加一些修正,因为proposal distribution q不依赖于数据,但是在Gibbs采样中,我们可以将proposal distribution q看成是full conditional分布,这取决于我们的数据。
所以我想知道如果我只使用小批量数据来计算吉布斯采样设置中的完整条件分布,是否可以添加一些校正。
pytorch - PyTorch Geometric 如何输入一个样本而不是小批量?
在标准 PyTorch 文档中,它表示torch.nn
将输入视为小批量。因此,对于一个样本,它建议使用input.unsqueeze(0)
以添加假批次。PyTorch 几何nn
模块是这种情况吗?
更具体地说,我想将具有 35 个顶点和标量边权重的全连接图提供给NNConv
图层。因此,我将此图表示为Data
对象,其中Data.x
35x35 邻接矩阵Data.edge_index
是 2 x 1225 张量,因为它是完全连接的,并且Data.edge_attr
是形状 1225 x 1 的张量,因为它是完全连接的,边缘属性只是标量权重。我设计了这样一个NNConv
层,我输入的不是小批量而是一个样本到网络。
在前向功能
我不明白的是我需要添加假的小批量。这是正确的还是我需要添加x.unsqueeze(0)
,如果是,这些Data
属性中的哪一个 ( x
, edge_index
, edge_attr
) 确实需要unsqueeze(0)
. 谢谢。
parallel-processing - 如何使用 Pytorch 将不同的模型分发到多个节点?
我有一个 pytorch 任务,它与 DP 一起使用:
将同一个网络复制到多个共享相同权重的 GPU 上,但每个副本接收不同的数据批次,因此它通过增加等效批次大小来加快训练速度。
但现在我希望在训练流程中引入多个不同的网络:net_A、net_B、net_C,它们属于不同的架构,不共享权重。
是否可以将每个网络分配给不同的节点(1个节点有4个GPU),这样“net_A”仍然可以在“node_A”的4个GPU上享受DP的加速,而“net_B”占用“node_B”等?
chainer - 如何使用 Chainer 中的 Standard Updater 类大幅增加小批量的数量?
如何使用 Chainer 中的 Standard Updater 类大幅增加小批量的数量?
在 PyTorch 的情况下,我可以大幅增加 mini-batch 的数量。
- 每次执行 loss.backward() 。
- 每 3 次执行 optimizer.step() / optimizer.zero_grad() 一次。这有效地大幅增加了 mini-batch 的数量。
问题 1. Chainer 的情况下,是否可以大幅增加 mini-batch 的数量?
- 每次执行 loss.backward() 。
- 每 3 次执行一次 net.cleargrads()/optimizer.update()。这可以大幅增加小批量的数量吗?
问题 2. 事实上,我使用的是 StandardUpdater 类。是否可以使用任何超参数大幅增加小批量的数量?或者我应该让我的类继承自 StandardUpdater 类并更改上面的实现?
如果问题已经被问到,我很抱歉。
我希望任何建议。
python-3.x - 如何使用 MultiOutputRegressor 的 XGBoost 继续学习?
我正在尝试使用继续训练来训练多输出 XGBoost 回归模型,但出现此错误:
TypeError: ('Unknown type:', MultiOutputRegressor(estimator=XGBRegressor(base_score=None, booster=None)
我的代码如下: