问题标签 [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 - 如何在 sklearn 中进行小批量梯度下降?
是否可以在 sklearn 中执行小批量梯度下降以进行逻辑回归?我知道有LogisticRegression
模型和SGDClassifier
(可以使用log
损失函数)。但是,LogisticRegression
它适用于整个数据集并SGDClassifier
逐个样本地拟合(请随意更正该陈述,但这就是我理解随机梯度下降的方式)。
还有一种partial_fit
方法,但仅适用于 SGD。我相信,如果我使用partial_fit
SGD,它会在每次遍历下一个数据集样本时更新权重(就像普通fit
方法一样)。因此,如果我向它提供 10 个样本的块,partial_fit
它会进行 10 次更新——但这不是我想要的。
我需要得到的是在每个第 n 个样本之后更新权重,就像在小批量梯度下降中一样。根据我所读到的内容LogisticRegression
,可以使用所谓的东西warm_start
,这意味着,来自先前fit
方法的权重被设置为 current 的初始值fit
。
如果这个理论warm_start
是真的,我可以fit
多次使用方法,每次只在一个小批量上?或者有没有其他方法可以在 sklearn 中进行小批量梯度下降?
我发现这个问题非常相似,只是它没有讨论这个warm_start
想法,所以这就是我再次问的原因。
pytorch - pytorch 中带有 minibatch 的 loss.backward()
我在网上看到了这段代码,我想知道我是否正确解释了它。下面是梯度下降过程的一部分。完整代码可通过链接https://jovian.ml/aakashns/03-logistic-regression获得。我的问题如下:在训练步骤中,我猜作者试图通过更新参数来最小化每批的损失。但是,如果 loss.backward() 仅应用于批量损失,我们如何确保所有训练样本的总损失最小化?
machine-learning - 在实现小批量梯度下降时,随机选择训练样本更好吗?
在实现小批量梯度下降时,随机选择训练示例(计算导数)是否更好?还是将整个训练示例洗牌然后遍历它们并每次洗牌会更好吗?第一种方法可能会导致我们跳过全局最小值。
deep-learning - 是否应该保持小批量中输入数据的序列性质?
假设以下数据的多元时间序列预测问题
打印出以下数据
考虑最后一列是要预测的目标时间序列。如果批量大小为 20,我可以在训练期间从第一批中随机跳过一些点,例如 1009、1012、1015?如果是,这是否意味着我们可以在时间序列中随机选择点作为训练和测试?
python - 切片以创建小批量
我打算从包含“m”个示例的训练集中为我的深度学习神经网络程序创建小批量。我努力了:
但这给了我以下结果:
预期的输出是:
我确定我已经实施但无法弄清楚的切片有问题。任何帮助深表感谢。谢谢!
memory - xarray.Dataset.to_array() 是否将数组加载到内存中,以及从 xarray 中采样小批量的效率如何?
我目前正在尝试将一个大的多维数组(> 5 GB)加载到 python 脚本中。由于我将数组用作机器学习模型的训练数据,因此以小批量有效加载数据但避免将整个数据集加载到内存中一次非常重要。
我的想法是使用xarray库。我用X=xarray.open_dataset("Test_file.nc")
. 据我所知,此命令不会将数据集加载到内存中——到目前为止,一切都很好。但是,我想X
使用命令转换为数组X=X.to_array()
。
我的第一个问题是:是否X=X.to_array()
将其加载到内存中?
如果这样做了,我想知道如何最好地将小批量加载到内存中。数组的形状是 (variable,datetime,x1_position,x2_position)。我想在每个日期时间加载小批量,这将导致:
ind=np.random.randint(low=0,high=n_times,size=(BATCH_SIZE))
mini_batch=X[:,ind]
另一种方法是在使用之前转置数组X.transpose("datetime","variable","x1_position","x2_position")
,然后通过以下方式进行采样:
ind=np.random.randint(low=0,high=n_times,size=(BATCH_SIZE))
mini_batch=X[ind,:]
我的第二个问题是:
转置 xarray 会影响索引效率吗?更具体地说,是否X[ind,:]
需要只要X[:,ind]
?
pytorch - 如何在 pytorch 图像处理模型中处理具有多个图像的样本?
我的模型训练涉及对同一图像的多个变体进行编码,然后将生成的表示对图像的所有变体求和。
数据加载器生成形状的张量批次:[batch_size,num_variants,1,height,width]
. 1
对应于图像颜色通道。
如何在 pytorch 中使用 minibatches 训练我的模型?我正在寻找一种通过网络转发所有 batch_size×num_variant 图像并将所有变体组的结果相加的正确方法。
我目前的解决方案涉及展平前两个维度并执行 for 循环来对表示进行求和,但我觉得应该有更好的方法,而且我不确定渐变是否会记住所有内容。
python - python中的线性回归小批量梯度下降:按批量大小拆分训练和验证数据
我试图按批量大小拆分训练和验证数据,并找到验证 rmse。训练特征数据的大小为 11000。验证特征数据的大小为 2750。但是,当我在 for 循环中使用 zip 函数时。它将 for 循环限制在较小的范围内,即 2750。
任何人都知道我该如何解决这个问题?我已经卡了两天了。
tensorflow - 在张量流中,当有很多小批量验证数据时,为什么只有一个验证损失?
在 tensorflow 中,如果我们提供validation_data
in .fit()
,我们会得到验证损失。但是即使验证数据集有很多小批量,也只有一个验证损失。所以我想知道 tensorflow 如何计算验证损失。
例如:
这将给出:
当验证数据集中有 10 个验证小批量时,只有一个验证损失。tensorflow 是否只需要一个 mini-batch 来计算损失?或者它是否单独计算每个批次的 y_pred,然后计算整个验证数据的损失?还是计算 10 个 mini-batch 的 10 个 loss,然后进行汇总统计?