如何在PyTorch基础示例中包含批量大小?

我是PyTorch的新手。以下是一个使用nn模块训练简单单层模型的基本示例,示例中使用了随机数据(来自这里

import torchN, D_in, H, D_out = 64, 1000, 100, 10x = torch.randn(N, D_in)y = torch.randn(N, D_out)model = torch.nn.Sequential(    torch.nn.Linear(D_in, H),    torch.nn.ReLU(),    torch.nn.Linear(H, D_out),)loss_fn = torch.nn.MSELoss(reduction='sum')optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)for t in range(500):    y_pred = model(x)    loss = loss_fn(y_pred, y)    print(t, loss.item())    optimizer.zero_grad()    loss.backward()    optimizer.step()

据我所知,示例中的批量大小等于1,换句话说,只使用64个点中的一个点来计算梯度和更新参数。我的问题是:如何修改这个示例,以便以大于1的批量大小来训练模型?


回答:

实际上,N就是批量大小。所以你只需要修改N,它当前设置为64。因此,每个训练批次中包含64个大小/维度为D_in的向量。

我查看了你发布的链接,你也可以看看其中的评论 – 那里也有一些解释 🙂

# -*- coding: utf-8 -*-import numpy as np# N是批量大小;D_in是输入维度;# H是隐藏维度;D_out是输出维度。N, D_in, H, D_out = 64, 1000, 100, 10# 创建随机输入和输出数据x = np.random.randn(N, D_in)y = np.random.randn(N, D_out)# 随机初始化权重w1 = np.random.randn(D_in, H)w2 = np.random.randn(H, D_out)learning_rate = 1e-6for t in range(500):    # 前向传递:计算预测的y    h = x.dot(w1)    h_relu = np.maximum(h, 0)    y_pred = h_relu.dot(w2)    # 计算并打印损失    loss = np.square(y_pred - y).sum()    print(t, loss)    # 反向传播以计算w1和w2相对于损失的梯度    grad_y_pred = 2.0 * (y_pred - y)    grad_w2 = h_relu.T.dot(grad_y_pred)    grad_h_relu = grad_y_pred.dot(w2.T)    grad_h = grad_h_relu.copy()    grad_h[h < 0] = 0    grad_w1 = x.T.dot(grad_h)    # 更新权重    w1 -= learning_rate * grad_w1    w2 -= learning_rate * grad_w2

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注