batchsize和数据量设置比例_训练过程--Batchsize(先不整理了,总之一般情况下batchsize能设多大就设多大)...

训练过程--Batchsize(先不整理了,总之一般情况下batchsize能设多大就设多大)

发布时间:2018-12-06 15:15,

浏览次数:3888

, 标签:

Batchsize

尽可能地设大batchsize "Large Batch

Large Batch在 keypoints上也是有用的,大概能提到0.4到0.3的点的AP。"

在利用 ImageNet 训练 AlexNet 模型时,其中每 GPU 的最优批量大小为 512。如果我们希望使用大量 GPU 并保证每 GPU

皆拥有理想的执行效率,则应当将批量大小设定为 16 x 512 = 8192。 "Train的batch是多少?

我们训练的时候根据输入图像的尺寸不同,batch_size在20到64之间。"

SGD 算法的 batch size 并不能无限制地增大。SGD 采用较大的 batch size 时,如果还是使用同样的 epochs

数量进行运算,则准确度往往低于 batch size 较小的场景 ; 而且目前还不存在特定算法方案能够帮助我们高效利用较大的 batch size。

对于大批量训练场景,我们需要确保使用较大的 batch size 训练能够在相同 epochs 前提下获得与较小的 batch size

相近的测试准确度。这里我们之所以保持 epochs 数量不变,是因为从统计学角度来讲,一个 epoch 代表着算法与整体数据集接触一次 ;

而从计算角度来讲,固定 epochs 数量意味着保证浮点运算次数不变。

Batch_Size 既然 Full Batch Learning 并不适用大数据

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 基于pytorch和Mask R-CNN实现的T恤属性识别python源码+项目说明.zip 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果有一点儿基础,亦可在此代码基础上进行修改,以实现其他功能。 本项目基于pytorch版本的Mask R-CNN来做T恤的属性识别。 T恤数据集的构建 标注种类 总共12类,标注T恤图片的廓形(袖型、领型、下摆、中间衣长区域) ``` "1": "T-Shirt", "2": "Curve_Hem", "3": "Elbow_Sleeve", "4": "Flat_Bottom", "5": "Long_Sleeve", "6": "Polo", "7": "Round_Collar", "8": "Short_Sleeve", "9": "Sleeveless", "10": "Square_Collar", "11": "Three-quarter_Sleeve", "12": "V_Collar", ``` 标注形式 用labelme标注,生成JSON文件,再用labelme官方GitHub仓库里的工具(见labelme2coco文件夹)转成coco数据集格式。 标记数量与训练集验证集 总计176张图片,其中 train:143 val: 33 以8:2进行shuffle分割(见train_test_split.py文件分割方式),同要保证train与val里都包含12个类 图片大小:resize:800 * 1333, 训练 实验平台:windows11,3050ti(4GB显存),pytorch batch_size = 1;lr=0.0001;epochs=30;优化器adam 还采用了torch.optim.lr_scheduler.MultiStepLR来手动根据epoch调整参数 绘制loss与lr曲线如下: ![](assert\loss_lr.png) 评测 采用 PASCAL VOC 2012 competition 中定义的 mAP 标准 利用pycocotools工具计算IOU=0.5时的map如下图: ![](assert\map.png) 各个种类的AP: ![](./assert/classes_map.png) 测试 随机从val数据集中拿出两张图片进行推理,测试结果如下: ![](./assert/test_result.jpg) ![](./assert/test_result2.jpg) 实验分析 1.由各种种类AP可以发现,Curve_Hem是AP值是最低的。 分析原因,下摆有Flat_Bottom与Curve_Hem两类。观察图片数据发现,有些T恤下摆特征不明显,不好区分,以致标注时没有准确标注。模型预测这类分类能力下降。 2.由测试结果可以发现,图一两人的袖子重叠在一起,但只检测出一个人的袖子。图二的模特由于带了项链,虽然检测出来是圆领,但也产生了V领的误判。 展望 1.扩充数据集,构建数据量更大的数据集,同时细化分类,避免一些歧义类别。 2.针对遮挡,重叠问题,考虑解决。在查阅了大量文献,得出一个有效的解决方案:利用服装关键点信息辅助特征提取,即进行T恤的关键点检测,准确检测出所有关键点,无论是遮挡还是重叠情况。**这也是我接下来的研究课题** 3.由本小数据集可以发现,由于衣服种类的多种多样,以及常见性,使得种类的数量产生了差异,即有数据不均衡的情况发生,在构造大数据集后可能也会不可避免的产生数据不均衡。这也是优化的一个点。 4.不多说,利用更sota的模型,提高基础性能。
好的,您的问题是如何建立365天的降雨量数据并使用PyTorch中的LSTM模型进行训练。下面是一个简单的实现步骤: 1. 数据准备: 首,您需要准备好365天的降雨量数据。您可以从气象站或其他数据源中收集这些数据。您需要将数据存储在一个CSV文件中,每一行代表一天的数据,每一列代表一个特征(例如降雨量,温度等)。对于这个任务,我们只考虑一个特征,即降雨量。 2. 数据预处理: 在将数据输入到LSTM模型之前,您需要对数据进行一些预处理。您需要将数据划分为训练集和测试集,并对数据进行归一化处理。您可以使用PyTorch中的torch.utils.data.Dataset和torch.utils.data.DataLoader来对数据进行划分和加载。 3. LSTM模型: 现在,您可以构建一个LSTM模型。在PyTorch中,您可以使用torch.nn.LSTM类来创建一个LSTM模型。您需要指定输入和输出的维度以及LSTM的隐藏状态维度。在这个任务中,您可以将输入和输出维度都设置为1,因为我们只考虑一个特征。 4. 训练模型: 现在,您可以使用训练集来训练您的LSTM模型。您需要定义一个损失函数和优化器,并使用torch.nn.MSELoss和torch.optim.Adam来实现。在每个epoch结束时,您可以计算模型在测试集上的损失以及其他指标来评估模型的性能。 下面是一个基本的代码示例: ```python import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import Dataset, DataLoader # 定义数据集类 class RainfallDataset(Dataset): def __init__(self, csv_file): self.data = pd.read_csv(csv_file) self.data = self.data[['rainfall']].values.astype(float) # 归一化 self.data = (self.data - np.min(self.data)) / (np.max(self.data) - np.min(self.data)) def __len__(self): return len(self.data) - 1 def __getitem__(self, idx): x = self.data[idx] y = self.data[idx+1] return x, y # 定义LSTM模型 class LSTM(nn.Module): def __init__(self, input_dim, hidden_dim, output_dim): super(LSTM, self).__init__() self.hidden_dim = hidden_dim self.lstm = nn.LSTM(input_dim, hidden_dim) self.fc = nn.Linear(hidden_dim, output_dim) def forward(self, x): lstm_out, _ = self.lstm(x.view(len(x), 1, -1)) out = self.fc(lstm_out.view(len(x), -1)) return out[-1] # 训练模型 def train(model, train_loader, test_loader, n_epochs=100): criterion = nn.MSELoss() optimizer = optim.Adam(model.parameters(), lr=0.01) train_losses = [] test_losses = [] for epoch in range(n_epochs): train_loss = 0.0 test_loss = 0.0 # 在训练集上训练 model.train() for data in train_loader: optimizer.zero_grad() inputs, labels = data outputs = model(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() train_loss += loss.item() train_loss /= len(train_loader) train_losses.append(train_loss) # 在测试集上评估 model.eval() with torch.no_grad(): for data in test_loader: inputs, labels = data outputs = model(inputs) loss = criterion(outputs, labels) test_loss += loss.item() test_loss /= len(test_loader) test_losses.append(test_loss) print('Epoch: {}, Train Loss: {:.6f}, Test Loss: {:.6f}'.format(epoch+1, train_loss, test_loss)) return train_losses, test_losses # 加载数据集 train_dataset = RainfallDataset('train.csv') test_dataset = RainfallDataset('test.csv') train_loader = DataLoader(train_dataset, batch_size=5, shuffle=True) test_loader = DataLoader(test_dataset, batch_size=5, shuffle=False) # 创建LSTM模型并训练 input_dim = 1 hidden_dim = 10 output_dim = 1 model = LSTM(input_dim, hidden_dim, output_dim) train_losses, test_losses = train(model, train_loader, test_loader) ``` 这个示例的目的是帮助您了解如何使用PyTorch中的LSTM模型进行训练。您需要根据自己的数据和任务进行一些调整和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值