训练神经网络时batch_size设置大小参考。

前言:在对神经网络进行训练时,大家经常会遇到一个超参数:batch_size

那么,batch_size究竟是什么,又该如何最优的设置这个值呢?

batch_size个人理解:将所训练的样本数量分为多少个为一组。这个值的大小与梯度下降的效率和结果直接相关。

假设训练样本共m个,你设置batch_size为1,则每个样本都是一个batch_size。
你设置batch_size为m,则所有样本组成这一个batch_size。
1与m也是两个极端。 当设置为m时,此时梯度下降称为批量梯度下降法。你可以理解为神经网络进行梯度下降时从最远的点,每次迭代需要遍历整个训练集。(所以需要很大的显存空间,如果你的样本数据不大,可以选择将batch_size设置为m)
当设置为1时,此时梯度下降称为随机梯度下降法。你可以理解为神经网络进行梯度下降时随机找一个点,每次迭代只处理一个训练数据(所以需要很长的时间来完成训练)

综合上述,选择一个合适大小的 batch_size是很重要的,因为计算机字符都是以2的指数次幂进行存储的,所以设置 batch_size时尽量选择例如 4, 8, 16, 32, 64, 128, 256 等。
假设你设置了256,训练网络时报错如下图在这里插入图片描述
那么:

  1. 在如下空白处右键点击任务管理器。在这里插入图片描述
  2. 点击性能在这里插入图片描述
    3.查看内存是不是快满了,如果是,可以重启一下电脑重置内存占用。在这里插入图片描述
    以上就是我的个人总结,如有错误,欢迎指正。
  • 11
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
好的,以下是一个简单的 BP 神经网络的示例代码,你可以参考一下: ```python import torch import torch.nn as nn class BPNet(nn.Module): def __init__(self, input_size, hidden_size, output_size): super(BPNet, self).__init__() self.fc1 = nn.Linear(input_size, hidden_size) self.relu = nn.ReLU() self.fc2 = nn.Linear(hidden_size, output_size) def forward(self, x): out = self.fc1(x) out = self.relu(out) out = self.fc2(out) return out # 设置超参数 input_size = 10 hidden_size = 20 output_size = 1 learning_rate = 0.01 epochs = 100 # 创建模型、损失函数和优化器 model = BPNet(input_size, hidden_size, output_size) criterion = nn.MSELoss() optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate) # 生成随机训练数据 x = torch.randn(100, input_size) y = torch.randn(100, output_size) # 训练模型 for epoch in range(epochs): optimizer.zero_grad() outputs = model(x) loss = criterion(outputs, y) loss.backward() optimizer.step() if (epoch + 1) % 10 == 0: print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, epochs, loss.item())) ``` 在这个示例中,我们定义了一个名为 `BPNet` 的类,它有一个包含两个全连接层的神经网络。然后,我们定义了超参数,包括输入特征的数量、隐藏层的大小、输出特征的数量、学习率和训练轮数。接着,我们生成了随机的训练数据,并使用 MSE(均方误差)作为损失函数,使用 SGD(随机梯度下降)作为优化器来训练模型。最后,我们输出了每个 epoch 的损失值,以便我们可以跟踪模型的训练进程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值