深度学习每周学习总结J6(ResNeXt-50 算法实战与解析 - 猴痘识别)

  • 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
  • 🍖 原作者:K同学啊 | 接辅导、项目定制

目录

      • 0. 总结
        • ResNeXt基本介绍
      • 1. 设置GPU
      • 2. 导入数据及处理部分
      • 3. 划分数据集
      • 4. 模型构建部分
      • 5. 设置超参数:定义损失函数,学习率,以及根据学习率定义优化器等
      • 6. 训练函数
      • 7. 测试函数
      • 8. 正式训练
      • 9. 结果可视化
      • 10. 模型的保存
      • 11.使用训练好的模型进行预测

0. 总结

数据导入及处理部分:本次数据导入没有使用torchvision自带的数据集,需要将原始数据进行处理包括数据导入,查看数据分类情况,定义transforms,进行数据类型转换等操作。

划分数据集:划定训练集测试集后,再使用torch.utils.data中的DataLoader()分别加载上一步处理好的训练及测试数据,查看批处理维度.

模型构建部分:ResNeXt-50

设置超参数:在这之前需要定义损失函数,学习率(动态学习率),以及根据学习率定义优化器(例如SGD随机梯度下降),用来在训练中更新参数,最小化损失函数。

定义训练函数:函数的传入的参数有四个,分别是设置好的DataLoader(),定义好的模型,损失函数,优化器。函数内部初始化损失准确率为0,接着开始循环,使用DataLoader()获取一个批次的数据,对这个批次的数据带入模型得到预测值,然后使用损失函数计算得到损失值。接下来就是进行反向传播以及使用优化器优化参数,梯度清零放在反向传播之前或者是使用优化器优化之后都是可以的,一般是默认放在反向传播之前。

定义测试函数:函数传入的参数相比训练函数少了优化器,只需传入设置好的DataLoader(),定义好的模型,损失函数。此外除了处理批次数据时无需再设置梯度清零、返向传播以及优化器优化参数,其余部分均和训练函数保持一致。

训练过程:定义训练次数,有几次就使用整个数据集进行几次训练,初始化四个空list分别存储每次训练及测试的准确率及损失。使用model.train()开启训练模式,调用训练函数得到准确率及损失。使用model.eval()将模型设置为评估模式,调用测试函数得到准确率及损失。接着就是将得到的训练及测试的准确率及损失存储到相应list中并合并打印出来,得到每一次整体训练后的准确率及损失。

结果可视化

模型的保存,调取及使用。在PyTorch中,通常使用 torch.save(model.state_dict(), ‘model.pth’) 保存模型的参数,使用 model.load_state_dict(torch.load(‘model.pth’)) 加载参数。

需要改进优化的地方:确保模型和数据的一致性,都存到GPU或者CPU;注意numclasses不要直接用默认的1000,需要根据实际数据集改进;实例化模型也要注意numclasses这个参数;此外注意测试模型需要用(3,224,224)3表示通道数,这和tensorflow定义的顺序是不用的(224,224,3),做代码转换时需要注意。

关于调优(十分重要):本次将测试集准确率提升到了94.87%(随机种子设置为42)
1:使用多卡不一定比单卡效果好,需要继续调优
2:本次微调参数主要调整了两点一是初始学习率从1e-4 增大为了3e-4;其次是原来图片预处理只加入了随机水平翻转,本次加入了小角度的随机翻转,随机缩放剪裁,光照变化等,发现有更好的效果。测试集准确率有了很大的提升。从训练后的准确率图像也可以看到,训练准确率和测试准确率很接近甚至能够超过。之前没有做这个改进之前,都是训练准确率远大于测试准确率。

关键代码示例:

import torchvision.transforms as transforms# 定义猴痘识别的 transforms
train_transforms = transforms.Compose([transforms.Resize([224, 224]),            # 统一图片尺寸transforms.RandomHorizontalFlip(p=0.5),  # 随机水平翻转transforms.RandomRotation(degrees=15),   # 小角度随机旋转transforms.RandomResizedCrop(size=224, scale=(0.8, 1.2)),  # 随机缩放裁剪transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.1),  # 光照变化transforms.ToTensor(),                   # 转换为 Tensor 格式transforms.Normalize(                    # 标准化mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225])
])
ResNeXt基本介绍

ResNeXt是一个基于卷积神经网络(CNN)的深度学习模型,最早由Facebook AI Research(FAIR)团队在2017年提出。它是ResNet(残差网络)的一个变种,通过引入"cardinality"(基数)这一概念,进一步提升了模型的性能。

  • ResNeXt的关键创新
  1. Cardinality(基数):

    • 传统的卷积神经网络通常通过增加层数或者每层的通道数(宽度)来提升模型的表现,但这可能导致计算和内存开销的大幅增加。ResNeXt通过引入"cardinality"(基数)的概念,指的是每个残差块中并行的路径数量。通过增加并行路径的数量,ResNeXt能够在不显著增加计算量的情况下提升网络的表达能力。
    • 具体来说,ResNeXt在每个残差块中使用了多个分支,每个分支都是相同的网络结构。通过调整分支的数量(即基数)来提高网络的表达能力。
  2. 分组卷积(Group Convolution):

    • ResNeXt使用了分组卷积,这使得计算量更加高效。分组卷积通过将输入通道分为若干组进行卷积操作,减少了计算量和内存开销。
  3. 结构设计:

    • 在ResNeXt中,残差块的结构是通过多路径结构来增强模型的表现。每个路径相当于一个独立的卷积操作,最终将它们的输出进行合并。这种方法与传统的单路径ResNet不同。
  • 与传统神经网络的对比
  1. 传统CNN(例如AlexNet、VGG等):

    • 传统的CNN网络通过加深网络层数或增加每一层的神经元来增强网络的表达能力,但这种做法面临梯度消失、过拟合等问题。因此,随着层数的增加,传统CNN的训练变得越来越困难。
  2. ResNet与ResNeXt的优势:

    • ResNet通过残差连接解决了深度神经网络训练时的梯度消失问题,使得网络可以很深而不容易退化。ResNeXt继承了ResNet的优点,但通过引入“基数”来进一步提升性能。相比于简单地增加网络深度或宽度,ResNeXt能够更高效地利用网络容量。
    • ResNeXt通过分支结构使得每个残差块更具表达能力,相较于传统网络和单路径的ResNet,ResNeXt在相同的计算量下通常能够得到更好的效果。

下图是ResNet(左)与ResNeXt(右)block的差异。在ResNet中,输入的具有256个通道的特征经过1×1卷积压缩4倍到64个通道,之后3×3的卷积核用于处理特征,经1×1卷积扩大通道数与原特征残差连接后输出。ResNeXt也是相同的处理策略,但在ResNeXt中,输入的具有256个通道的特征被分为32个组,每组被压缩64倍到4个通道后进行处理。32个组相加后与原特征残差连接后输出。这里cardinatity指的是一个block中所具有的相同分支的数目。

import torch
import torch.nn as nn
import torchvision
from torchvision import datasets,transforms
from torch.utils.data import DataLoader
import torchvision.models as models
import torch.nn.functional as F
from collections import OrderedDict import os,PIL,pathlib
import matplotlib.pyplot as plt
import warningswarnings.filterwarnings('ignore') # 忽略警告信息plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False   # 用来正常显示负号
plt.rcParams['figure.dpi'] = 100 # 分辨率

1. 设置GPU

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
device
device(type='cuda')

2. 导入数据及处理部分

# 获取数据分布情况
path_dir = './data/mpox_recognize/'
path_dir = pathlib.Path(path_dir)paths = list(path_dir.glob('*'))
# classNames = [str(path).split("\\")[-1] for path in paths] # ['Bananaquit', 'Black Skimmer', 'Black Throated Bushtiti', 'Cockatoo']
classNames = [path.parts[-1] for path in paths]
classNames
['Monkeypox', 'Others']
# 定义transforms 并处理数据
# train_transforms = transforms.Compose([
#     transforms.Resize([224,224]),      # 将输入图片resize成统一尺寸
#     transforms.RandomHorizontalFlip(), # 随机水平翻转
#     transforms.ToTensor(),             # 将PIL Image 或 numpy.ndarray 装换为tensor,并归一化到[0,1]之间
#     transforms.Normalize(              # 标准化处理 --> 转换为标准正太分布(高斯分布),使模型更容易收敛
#         mean = [0.485,0.456,0.406],    # 其中 mean=[0.485,0.456,0.406]与std=[0.229,0.224,0.225] 从数据集中随机抽样计算得到的。
#         std = [0.229,0.224,0.225]
#     )
# ])# 定义猴痘识别的 transforms 并处理数据
train_transforms = transforms.Compose([transforms.Resize([224, 224]),            # 统一图片尺寸transforms.RandomHorizontalFlip(p=0.5),  # 随机水平翻转transforms.RandomRotation(degrees=15),   # 小角度随机旋转transforms.RandomResizedCrop(size=224, scale=(0.8, 1.2)),  # 随机缩放裁剪transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.1),  # 光照变化transforms.ToTensor(),                   # 转换为 Tensor 格式transforms.Normalize(                    # 标准化mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225])
])test_transforms = transforms.Compose([transforms.Resize([224,224]),transforms.ToTensor(),transforms.Normalize(mean = [0.485,0.456,0.406],std = [0.229,0.224,0.225])
])
total_data = datasets.ImageFolder('./data/mpox_recognize/',transform = train_transforms)
total_data
Dataset ImageFolderNumber of datapoints: 2142Root location: ./data/mpox_recognize/StandardTransform
Transform: Compose(Resize(size=[224, 224], interpolation=bilinear, max_size=None, antialias=True)RandomHorizontalFlip(p=0.5)RandomRotation(degrees=[-15.0, 15.0], interpolation=nearest, expand=False, fill=0)RandomResizedCrop(size=(224, 224), scale=(0.8, 1.2), ratio=(0.75, 1.3333), interpolation=bilinear, antialias=True)ColorJitter(brightness=(0.8, 1.2), contrast=(0.8, 1.2), saturation=(0.9, 1.1), hue=None)ToTensor()Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]))

3. 划分数据集

# 设置随机种子
torch.manual_seed(42)# 划分数据集
train_size = int(len(total_data) * 0.8)
test_size = len(total_data) - train_sizetrain_dataset,test_dataset = torch.utils.data.random_split(total_data,[train_size,test_size])
train_dataset,test_dataset
(<torch.utils.data.dataset.Subset at 0x7c9ba5755670>,<torch.utils.data.dataset.Subset at 0x7c9ba5755790>)
# 定义DataLoader用于数据集的加载batch_size = 32 # 如使用多显卡,请确保 batch_size 是显卡数量的倍数。train_dl = torch.utils.data.DataLoader(train_dataset,batch_size = batch_size,shuffle = True,num_workers = 1
)
test_dl = torch.utils.data.DataLoader(test_dataset,batch_size = batch_size,shuffle = True,num_workers = 1
)
# 观察数据维度
for X,y in test_dl:print("Shape of X [N,C,H,W]: ",X.shape)print("Shape of y: ", y.shape,y.dtype)break
Shape of X [N,C,H,W]:  torch.Size([32, 3, 224, 224])
Shape of y:  torch.Size([32]) torch.int64

4. 模型构建部分

import torch
import torch.nn as nn
import torch.nn.functional as F# 定义分组卷积模块
class GroupedConvBlock(nn.Module):def __init__(self, in_channels, groups, g_channels, stride):super(GroupedConvBlock, self).__init__()self.groups = groupsself.group_convs = nn.ModuleList([nn.Conv2d(g_channels, g_channels, kernel_size=3, stride=stride, padding=1, bias=False)for _ in range(groups)])self.bn = nn.BatchNorm2d(in_channels)self.relu = nn.ReLU(inplace=True)def forward(self, x):# 分组数据split_x = torch.split(x, x.size(1) // self.groups, dim=1)group_out = [conv(g) for g, conv in zip(split_x, self.group_convs)]# 合并数据x = torch.cat(group_out, dim=1)x = self.bn(x)x = self.relu(x)return x# 定义残差模块
class ResNeXtBlock(nn.Module):def __init__(self, in_channels, filters, groups=32, stride=1, conv_shortcut=True):super(ResNeXtBlock, self).__init__()self.conv_shortcut = conv_shortcutself.groups = groupsself.g_channels = filters // groups# Shortcut分支if conv_shortcut:self.shortcut = nn.Sequential(nn.Conv2d(in_channels, filters * 2, kernel_size=1, stride=stride, bias=False),nn.BatchNorm2d(filters * 2),)else:self.shortcut = nn.Identity()# 主分支self.conv1 = nn.Sequential(nn.Conv2d(in_channels, filters, kernel_size=1, stride=1, bias=False),nn.BatchNorm2d(filters),nn.ReLU(inplace=True))self.grouped_conv = GroupedConvBlock(filters, groups, self.g_channels, stride)self.conv3 = nn.Sequential(nn.Conv2d(filters, filters * 2, kernel_size=1, stride=1, bias=False),nn.BatchNorm2d(filters * 2),)self.relu = nn.ReLU(inplace=True)def forward(self, x):shortcut = self.shortcut(x)x = self.conv1(x)x = self.grouped_conv(x)x = self.conv3(x)x += shortcutx = self.relu(x)return x# 定义 ResNeXt-50 模型
class ResNeXt50(nn.Module):def __init__(self, num_classes=1000):super(ResNeXt50, self).__init__()self.stem = nn.Sequential(nn.Conv2d(3, 64, kernel_size=7, stride=2, padding=3, bias=False),nn.BatchNorm2d(64),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=3, stride=2, padding=1))# 堆叠ResNeXt模块self.layer1 = self._make_layer(64, 128, 3, stride=1)self.layer2 = self._make_layer(256, 256, 4, stride=2)self.layer3 = self._make_layer(512, 512, 6, stride=2)self.layer4 = self._make_layer(1024, 1024, 3, stride=2)# 全局平均池化和分类层self.global_avg_pool = nn.AdaptiveAvgPool2d(1)self.fc = nn.Linear(2048, num_classes)def _make_layer(self, in_channels, filters, blocks, stride):layers = [ResNeXtBlock(in_channels, filters, stride=stride)]for _ in range(1, blocks):layers.append(ResNeXtBlock(filters * 2, filters, stride=1))return nn.Sequential(*layers)def forward(self, x):x = self.stem(x)x = self.layer1(x)x = self.layer2(x)x = self.layer3(x)x = self.layer4(x)x = self.global_avg_pool(x)x = torch.flatten(x, 1)x = self.fc(x)return x
model = ResNeXt50(num_classes=len(classNames)).to(device)
model
ResNeXt50((stem): Sequential((0): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True)(3): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False))(layer1): Sequential((0): ResNeXtBlock((shortcut): Sequential((0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(conv1): Sequential((0): Conv2d(64, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True))(grouped_conv): GroupedConvBlock((group_convs): ModuleList((0-31): 32 x Conv2d(4, 4, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False))(bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(relu): ReLU(inplace=True))(conv3): Sequential((0): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(relu): ReLU(inplace=True))(1): ResNeXtBlock((shortcut): Sequential((0): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(conv1): Sequential((0): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True))(grouped_conv): GroupedConvBlock((group_convs): ModuleList((0-31): 32 x Conv2d(4, 4, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False))(bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(relu): ReLU(inplace=True))(conv3): Sequential((0): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(relu): ReLU(inplace=True))(2): ResNeXtBlock((shortcut): Sequential((0): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(conv1): Sequential((0): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True))(grouped_conv): GroupedConvBlock((group_convs): ModuleList((0-31): 32 x Conv2d(4, 4, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False))(bn): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(relu): ReLU(inplace=True))(conv3): Sequential((0): Conv2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(relu): ReLU(inplace=True)))(layer2): Sequential((0): ResNeXtBlock((shortcut): Sequential((0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(conv1): Sequential((0): Conv2d(256, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True))(grouped_conv): GroupedConvBlock((group_convs): ModuleList((0-31): 32 x Conv2d(8, 8, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False))(bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(relu): ReLU(inplace=True))(conv3): Sequential((0): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(relu): ReLU(inplace=True))(1): ResNeXtBlock((shortcut): Sequential((0): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(conv1): Sequential((0): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True))(grouped_conv): GroupedConvBlock((group_convs): ModuleList((0-31): 32 x Conv2d(8, 8, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False))(bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(relu): ReLU(inplace=True))(conv3): Sequential((0): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(relu): ReLU(inplace=True))(2): ResNeXtBlock((shortcut): Sequential((0): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(conv1): Sequential((0): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True))(grouped_conv): GroupedConvBlock((group_convs): ModuleList((0-31): 32 x Conv2d(8, 8, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False))(bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(relu): ReLU(inplace=True))(conv3): Sequential((0): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(relu): ReLU(inplace=True))(3): ResNeXtBlock((shortcut): Sequential((0): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(conv1): Sequential((0): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True))(grouped_conv): GroupedConvBlock((group_convs): ModuleList((0-31): 32 x Conv2d(8, 8, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False))(bn): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(relu): ReLU(inplace=True))(conv3): Sequential((0): Conv2d(256, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(relu): ReLU(inplace=True)))(layer3): Sequential((0): ResNeXtBlock((shortcut): Sequential((0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(conv1): Sequential((0): Conv2d(512, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True))(grouped_conv): GroupedConvBlock((group_convs): ModuleList((0-31): 32 x Conv2d(16, 16, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False))(bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(relu): ReLU(inplace=True))(conv3): Sequential((0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(relu): ReLU(inplace=True))(1): ResNeXtBlock((shortcut): Sequential((0): Conv2d(1024, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(conv1): Sequential((0): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True))(grouped_conv): GroupedConvBlock((group_convs): ModuleList((0-31): 32 x Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False))(bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(relu): ReLU(inplace=True))(conv3): Sequential((0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(relu): ReLU(inplace=True))(2): ResNeXtBlock((shortcut): Sequential((0): Conv2d(1024, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(conv1): Sequential((0): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True))(grouped_conv): GroupedConvBlock((group_convs): ModuleList((0-31): 32 x Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False))(bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(relu): ReLU(inplace=True))(conv3): Sequential((0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(relu): ReLU(inplace=True))(3): ResNeXtBlock((shortcut): Sequential((0): Conv2d(1024, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(conv1): Sequential((0): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True))(grouped_conv): GroupedConvBlock((group_convs): ModuleList((0-31): 32 x Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False))(bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(relu): ReLU(inplace=True))(conv3): Sequential((0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(relu): ReLU(inplace=True))(4): ResNeXtBlock((shortcut): Sequential((0): Conv2d(1024, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(conv1): Sequential((0): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True))(grouped_conv): GroupedConvBlock((group_convs): ModuleList((0-31): 32 x Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False))(bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(relu): ReLU(inplace=True))(conv3): Sequential((0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(relu): ReLU(inplace=True))(5): ResNeXtBlock((shortcut): Sequential((0): Conv2d(1024, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(conv1): Sequential((0): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True))(grouped_conv): GroupedConvBlock((group_convs): ModuleList((0-31): 32 x Conv2d(16, 16, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False))(bn): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(relu): ReLU(inplace=True))(conv3): Sequential((0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(relu): ReLU(inplace=True)))(layer4): Sequential((0): ResNeXtBlock((shortcut): Sequential((0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)(1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(conv1): Sequential((0): Conv2d(1024, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True))(grouped_conv): GroupedConvBlock((group_convs): ModuleList((0-31): 32 x Conv2d(32, 32, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False))(bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(relu): ReLU(inplace=True))(conv3): Sequential((0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(relu): ReLU(inplace=True))(1): ResNeXtBlock((shortcut): Sequential((0): Conv2d(2048, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(conv1): Sequential((0): Conv2d(2048, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True))(grouped_conv): GroupedConvBlock((group_convs): ModuleList((0-31): 32 x Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False))(bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(relu): ReLU(inplace=True))(conv3): Sequential((0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(relu): ReLU(inplace=True))(2): ResNeXtBlock((shortcut): Sequential((0): Conv2d(2048, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(conv1): Sequential((0): Conv2d(2048, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(2): ReLU(inplace=True))(grouped_conv): GroupedConvBlock((group_convs): ModuleList((0-31): 32 x Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False))(bn): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)(relu): ReLU(inplace=True))(conv3): Sequential((0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)(1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True))(relu): ReLU(inplace=True)))(global_avg_pool): AdaptiveAvgPool2d(output_size=1)(fc): Linear(in_features=2048, out_features=2, bias=True)
)
# 查看模型详情
import torchsummary as summary
summary.summary(model,(3,224,224))
----------------------------------------------------------------Layer (type)               Output Shape         Param #
================================================================Conv2d-1         [-1, 64, 112, 112]           9,408BatchNorm2d-2         [-1, 64, 112, 112]             128ReLU-3         [-1, 64, 112, 112]               0MaxPool2d-4           [-1, 64, 56, 56]               0Conv2d-5          [-1, 256, 56, 56]          16,384BatchNorm2d-6          [-1, 256, 56, 56]             512Conv2d-7          [-1, 128, 56, 56]           8,192BatchNorm2d-8          [-1, 128, 56, 56]             256ReLU-9          [-1, 128, 56, 56]               0Conv2d-10            [-1, 4, 56, 56]             144Conv2d-11            [-1, 4, 56, 56]             144Conv2d-12            [-1, 4, 56, 56]             144Conv2d-13            [-1, 4, 56, 56]             144Conv2d-14            [-1, 4, 56, 56]             144Conv2d-15            [-1, 4, 56, 56]             144Conv2d-16            [-1, 4, 56, 56]             144Conv2d-17            [-1, 4, 56, 56]             144Conv2d-18            [-1, 4, 56, 56]             144Conv2d-19            [-1, 4, 56, 56]             144Conv2d-20            [-1, 4, 56, 56]             144Conv2d-21            [-1, 4, 56, 56]             144Conv2d-22            [-1, 4, 56, 56]             144Conv2d-23            [-1, 4, 56, 56]             144Conv2d-24            [-1, 4, 56, 56]             144Conv2d-25            [-1, 4, 56, 56]             144Conv2d-26            [-1, 4, 56, 56]             144Conv2d-27            [-1, 4, 56, 56]             144Conv2d-28            [-1, 4, 56, 56]             144Conv2d-29            [-1, 4, 56, 56]             144Conv2d-30            [-1, 4, 56, 56]             144Conv2d-31            [-1, 4, 56, 56]             144Conv2d-32            [-1, 4, 56, 56]             144Conv2d-33            [-1, 4, 56, 56]             144Conv2d-34            [-1, 4, 56, 56]             144Conv2d-35            [-1, 4, 56, 56]             144Conv2d-36            [-1, 4, 56, 56]             144Conv2d-37            [-1, 4, 56, 56]             144Conv2d-38            [-1, 4, 56, 56]             144Conv2d-39            [-1, 4, 56, 56]             144Conv2d-40            [-1, 4, 56, 56]             144Conv2d-41            [-1, 4, 56, 56]             144BatchNorm2d-42          [-1, 128, 56, 56]             256ReLU-43          [-1, 128, 56, 56]               0GroupedConvBlock-44          [-1, 128, 56, 56]               0Conv2d-45          [-1, 256, 56, 56]          32,768BatchNorm2d-46          [-1, 256, 56, 56]             512ReLU-47          [-1, 256, 56, 56]               0ResNeXtBlock-48          [-1, 256, 56, 56]               0Conv2d-49          [-1, 256, 56, 56]          65,536BatchNorm2d-50          [-1, 256, 56, 56]             512Conv2d-51          [-1, 128, 56, 56]          32,768BatchNorm2d-52          [-1, 128, 56, 56]             256ReLU-53          [-1, 128, 56, 56]               0Conv2d-54            [-1, 4, 56, 56]             144Conv2d-55            [-1, 4, 56, 56]             144Conv2d-56            [-1, 4, 56, 56]             144Conv2d-57            [-1, 4, 56, 56]             144Conv2d-58            [-1, 4, 56, 56]             144Conv2d-59            [-1, 4, 56, 56]             144Conv2d-60            [-1, 4, 56, 56]             144Conv2d-61            [-1, 4, 56, 56]             144Conv2d-62            [-1, 4, 56, 56]             144Conv2d-63            [-1, 4, 56, 56]             144Conv2d-64            [-1, 4, 56, 56]             144Conv2d-65            [-1, 4, 56, 56]             144Conv2d-66            [-1, 4, 56, 56]             144Conv2d-67            [-1, 4, 56, 56]             144Conv2d-68            [-1, 4, 56, 56]             144Conv2d-69            [-1, 4, 56, 56]             144Conv2d-70            [-1, 4, 56, 56]             144Conv2d-71            [-1, 4, 56, 56]             144Conv2d-72            [-1, 4, 56, 56]             144Conv2d-73            [-1, 4, 56, 56]             144Conv2d-74            [-1, 4, 56, 56]             144Conv2d-75            [-1, 4, 56, 56]             144Conv2d-76            [-1, 4, 56, 56]             144Conv2d-77            [-1, 4, 56, 56]             144Conv2d-78            [-1, 4, 56, 56]             144Conv2d-79            [-1, 4, 56, 56]             144Conv2d-80            [-1, 4, 56, 56]             144Conv2d-81            [-1, 4, 56, 56]             144Conv2d-82            [-1, 4, 56, 56]             144Conv2d-83            [-1, 4, 56, 56]             144Conv2d-84            [-1, 4, 56, 56]             144Conv2d-85            [-1, 4, 56, 56]             144BatchNorm2d-86          [-1, 128, 56, 56]             256ReLU-87          [-1, 128, 56, 56]               0GroupedConvBlock-88          [-1, 128, 56, 56]               0Conv2d-89          [-1, 256, 56, 56]          32,768BatchNorm2d-90          [-1, 256, 56, 56]             512ReLU-91          [-1, 256, 56, 56]               0ResNeXtBlock-92          [-1, 256, 56, 56]               0Conv2d-93          [-1, 256, 56, 56]          65,536BatchNorm2d-94          [-1, 256, 56, 56]             512Conv2d-95          [-1, 128, 56, 56]          32,768BatchNorm2d-96          [-1, 128, 56, 56]             256ReLU-97          [-1, 128, 56, 56]               0Conv2d-98            [-1, 4, 56, 56]             144Conv2d-99            [-1, 4, 56, 56]             144Conv2d-100            [-1, 4, 56, 56]             144Conv2d-101            [-1, 4, 56, 56]             144Conv2d-102            [-1, 4, 56, 56]             144Conv2d-103            [-1, 4, 56, 56]             144Conv2d-104            [-1, 4, 56, 56]             144Conv2d-105            [-1, 4, 56, 56]             144Conv2d-106            [-1, 4, 56, 56]             144Conv2d-107            [-1, 4, 56, 56]             144Conv2d-108            [-1, 4, 56, 56]             144Conv2d-109            [-1, 4, 56, 56]             144Conv2d-110            [-1, 4, 56, 56]             144Conv2d-111            [-1, 4, 56, 56]             144Conv2d-112            [-1, 4, 56, 56]             144Conv2d-113            [-1, 4, 56, 56]             144Conv2d-114            [-1, 4, 56, 56]             144Conv2d-115            [-1, 4, 56, 56]             144Conv2d-116            [-1, 4, 56, 56]             144Conv2d-117            [-1, 4, 56, 56]             144Conv2d-118            [-1, 4, 56, 56]             144Conv2d-119            [-1, 4, 56, 56]             144Conv2d-120            [-1, 4, 56, 56]             144Conv2d-121            [-1, 4, 56, 56]             144Conv2d-122            [-1, 4, 56, 56]             144Conv2d-123            [-1, 4, 56, 56]             144Conv2d-124            [-1, 4, 56, 56]             144Conv2d-125            [-1, 4, 56, 56]             144Conv2d-126            [-1, 4, 56, 56]             144Conv2d-127            [-1, 4, 56, 56]             144Conv2d-128            [-1, 4, 56, 56]             144Conv2d-129            [-1, 4, 56, 56]             144BatchNorm2d-130          [-1, 128, 56, 56]             256ReLU-131          [-1, 128, 56, 56]               0
GroupedConvBlock-132          [-1, 128, 56, 56]               0Conv2d-133          [-1, 256, 56, 56]          32,768BatchNorm2d-134          [-1, 256, 56, 56]             512ReLU-135          [-1, 256, 56, 56]               0ResNeXtBlock-136          [-1, 256, 56, 56]               0Conv2d-137          [-1, 512, 28, 28]         131,072BatchNorm2d-138          [-1, 512, 28, 28]           1,024Conv2d-139          [-1, 256, 56, 56]          65,536BatchNorm2d-140          [-1, 256, 56, 56]             512ReLU-141          [-1, 256, 56, 56]               0Conv2d-142            [-1, 8, 28, 28]             576Conv2d-143            [-1, 8, 28, 28]             576Conv2d-144            [-1, 8, 28, 28]             576Conv2d-145            [-1, 8, 28, 28]             576Conv2d-146            [-1, 8, 28, 28]             576Conv2d-147            [-1, 8, 28, 28]             576Conv2d-148            [-1, 8, 28, 28]             576Conv2d-149            [-1, 8, 28, 28]             576Conv2d-150            [-1, 8, 28, 28]             576Conv2d-151            [-1, 8, 28, 28]             576Conv2d-152            [-1, 8, 28, 28]             576Conv2d-153            [-1, 8, 28, 28]             576Conv2d-154            [-1, 8, 28, 28]             576Conv2d-155            [-1, 8, 28, 28]             576Conv2d-156            [-1, 8, 28, 28]             576Conv2d-157            [-1, 8, 28, 28]             576Conv2d-158            [-1, 8, 28, 28]             576Conv2d-159            [-1, 8, 28, 28]             576Conv2d-160            [-1, 8, 28, 28]             576Conv2d-161            [-1, 8, 28, 28]             576Conv2d-162            [-1, 8, 28, 28]             576Conv2d-163            [-1, 8, 28, 28]             576Conv2d-164            [-1, 8, 28, 28]             576Conv2d-165            [-1, 8, 28, 28]             576Conv2d-166            [-1, 8, 28, 28]             576Conv2d-167            [-1, 8, 28, 28]             576Conv2d-168            [-1, 8, 28, 28]             576Conv2d-169            [-1, 8, 28, 28]             576Conv2d-170            [-1, 8, 28, 28]             576Conv2d-171            [-1, 8, 28, 28]             576Conv2d-172            [-1, 8, 28, 28]             576Conv2d-173            [-1, 8, 28, 28]             576BatchNorm2d-174          [-1, 256, 28, 28]             512ReLU-175          [-1, 256, 28, 28]               0
GroupedConvBlock-176          [-1, 256, 28, 28]               0Conv2d-177          [-1, 512, 28, 28]         131,072BatchNorm2d-178          [-1, 512, 28, 28]           1,024ReLU-179          [-1, 512, 28, 28]               0ResNeXtBlock-180          [-1, 512, 28, 28]               0Conv2d-181          [-1, 512, 28, 28]         262,144BatchNorm2d-182          [-1, 512, 28, 28]           1,024Conv2d-183          [-1, 256, 28, 28]         131,072BatchNorm2d-184          [-1, 256, 28, 28]             512ReLU-185          [-1, 256, 28, 28]               0Conv2d-186            [-1, 8, 28, 28]             576Conv2d-187            [-1, 8, 28, 28]             576Conv2d-188            [-1, 8, 28, 28]             576Conv2d-189            [-1, 8, 28, 28]             576Conv2d-190            [-1, 8, 28, 28]             576Conv2d-191            [-1, 8, 28, 28]             576Conv2d-192            [-1, 8, 28, 28]             576Conv2d-193            [-1, 8, 28, 28]             576Conv2d-194            [-1, 8, 28, 28]             576Conv2d-195            [-1, 8, 28, 28]             576Conv2d-196            [-1, 8, 28, 28]             576Conv2d-197            [-1, 8, 28, 28]             576Conv2d-198            [-1, 8, 28, 28]             576Conv2d-199            [-1, 8, 28, 28]             576Conv2d-200            [-1, 8, 28, 28]             576Conv2d-201            [-1, 8, 28, 28]             576Conv2d-202            [-1, 8, 28, 28]             576Conv2d-203            [-1, 8, 28, 28]             576Conv2d-204            [-1, 8, 28, 28]             576Conv2d-205            [-1, 8, 28, 28]             576Conv2d-206            [-1, 8, 28, 28]             576Conv2d-207            [-1, 8, 28, 28]             576Conv2d-208            [-1, 8, 28, 28]             576Conv2d-209            [-1, 8, 28, 28]             576Conv2d-210            [-1, 8, 28, 28]             576Conv2d-211            [-1, 8, 28, 28]             576Conv2d-212            [-1, 8, 28, 28]             576Conv2d-213            [-1, 8, 28, 28]             576Conv2d-214            [-1, 8, 28, 28]             576Conv2d-215            [-1, 8, 28, 28]             576Conv2d-216            [-1, 8, 28, 28]             576Conv2d-217            [-1, 8, 28, 28]             576BatchNorm2d-218          [-1, 256, 28, 28]             512ReLU-219          [-1, 256, 28, 28]               0
GroupedConvBlock-220          [-1, 256, 28, 28]               0Conv2d-221          [-1, 512, 28, 28]         131,072BatchNorm2d-222          [-1, 512, 28, 28]           1,024ReLU-223          [-1, 512, 28, 28]               0ResNeXtBlock-224          [-1, 512, 28, 28]               0Conv2d-225          [-1, 512, 28, 28]         262,144BatchNorm2d-226          [-1, 512, 28, 28]           1,024Conv2d-227          [-1, 256, 28, 28]         131,072BatchNorm2d-228          [-1, 256, 28, 28]             512ReLU-229          [-1, 256, 28, 28]               0Conv2d-230            [-1, 8, 28, 28]             576Conv2d-231            [-1, 8, 28, 28]             576Conv2d-232            [-1, 8, 28, 28]             576Conv2d-233            [-1, 8, 28, 28]             576Conv2d-234            [-1, 8, 28, 28]             576Conv2d-235            [-1, 8, 28, 28]             576Conv2d-236            [-1, 8, 28, 28]             576Conv2d-237            [-1, 8, 28, 28]             576Conv2d-238            [-1, 8, 28, 28]             576Conv2d-239            [-1, 8, 28, 28]             576Conv2d-240            [-1, 8, 28, 28]             576Conv2d-241            [-1, 8, 28, 28]             576Conv2d-242            [-1, 8, 28, 28]             576Conv2d-243            [-1, 8, 28, 28]             576Conv2d-244            [-1, 8, 28, 28]             576Conv2d-245            [-1, 8, 28, 28]             576Conv2d-246            [-1, 8, 28, 28]             576Conv2d-247            [-1, 8, 28, 28]             576Conv2d-248            [-1, 8, 28, 28]             576Conv2d-249            [-1, 8, 28, 28]             576Conv2d-250            [-1, 8, 28, 28]             576Conv2d-251            [-1, 8, 28, 28]             576Conv2d-252            [-1, 8, 28, 28]             576Conv2d-253            [-1, 8, 28, 28]             576Conv2d-254            [-1, 8, 28, 28]             576Conv2d-255            [-1, 8, 28, 28]             576Conv2d-256            [-1, 8, 28, 28]             576Conv2d-257            [-1, 8, 28, 28]             576Conv2d-258            [-1, 8, 28, 28]             576Conv2d-259            [-1, 8, 28, 28]             576Conv2d-260            [-1, 8, 28, 28]             576Conv2d-261            [-1, 8, 28, 28]             576BatchNorm2d-262          [-1, 256, 28, 28]             512ReLU-263          [-1, 256, 28, 28]               0
GroupedConvBlock-264          [-1, 256, 28, 28]               0Conv2d-265          [-1, 512, 28, 28]         131,072BatchNorm2d-266          [-1, 512, 28, 28]           1,024ReLU-267          [-1, 512, 28, 28]               0ResNeXtBlock-268          [-1, 512, 28, 28]               0Conv2d-269          [-1, 512, 28, 28]         262,144BatchNorm2d-270          [-1, 512, 28, 28]           1,024Conv2d-271          [-1, 256, 28, 28]         131,072BatchNorm2d-272          [-1, 256, 28, 28]             512ReLU-273          [-1, 256, 28, 28]               0Conv2d-274            [-1, 8, 28, 28]             576Conv2d-275            [-1, 8, 28, 28]             576Conv2d-276            [-1, 8, 28, 28]             576Conv2d-277            [-1, 8, 28, 28]             576Conv2d-278            [-1, 8, 28, 28]             576Conv2d-279            [-1, 8, 28, 28]             576Conv2d-280            [-1, 8, 28, 28]             576Conv2d-281            [-1, 8, 28, 28]             576Conv2d-282            [-1, 8, 28, 28]             576Conv2d-283            [-1, 8, 28, 28]             576Conv2d-284            [-1, 8, 28, 28]             576Conv2d-285            [-1, 8, 28, 28]             576Conv2d-286            [-1, 8, 28, 28]             576Conv2d-287            [-1, 8, 28, 28]             576Conv2d-288            [-1, 8, 28, 28]             576Conv2d-289            [-1, 8, 28, 28]             576Conv2d-290            [-1, 8, 28, 28]             576Conv2d-291            [-1, 8, 28, 28]             576Conv2d-292            [-1, 8, 28, 28]             576Conv2d-293            [-1, 8, 28, 28]             576Conv2d-294            [-1, 8, 28, 28]             576Conv2d-295            [-1, 8, 28, 28]             576Conv2d-296            [-1, 8, 28, 28]             576Conv2d-297            [-1, 8, 28, 28]             576Conv2d-298            [-1, 8, 28, 28]             576Conv2d-299            [-1, 8, 28, 28]             576Conv2d-300            [-1, 8, 28, 28]             576Conv2d-301            [-1, 8, 28, 28]             576Conv2d-302            [-1, 8, 28, 28]             576Conv2d-303            [-1, 8, 28, 28]             576Conv2d-304            [-1, 8, 28, 28]             576Conv2d-305            [-1, 8, 28, 28]             576BatchNorm2d-306          [-1, 256, 28, 28]             512ReLU-307          [-1, 256, 28, 28]               0
GroupedConvBlock-308          [-1, 256, 28, 28]               0Conv2d-309          [-1, 512, 28, 28]         131,072BatchNorm2d-310          [-1, 512, 28, 28]           1,024ReLU-311          [-1, 512, 28, 28]               0ResNeXtBlock-312          [-1, 512, 28, 28]               0Conv2d-313         [-1, 1024, 14, 14]         524,288BatchNorm2d-314         [-1, 1024, 14, 14]           2,048Conv2d-315          [-1, 512, 28, 28]         262,144BatchNorm2d-316          [-1, 512, 28, 28]           1,024ReLU-317          [-1, 512, 28, 28]               0Conv2d-318           [-1, 16, 14, 14]           2,304Conv2d-319           [-1, 16, 14, 14]           2,304Conv2d-320           [-1, 16, 14, 14]           2,304Conv2d-321           [-1, 16, 14, 14]           2,304Conv2d-322           [-1, 16, 14, 14]           2,304Conv2d-323           [-1, 16, 14, 14]           2,304Conv2d-324           [-1, 16, 14, 14]           2,304Conv2d-325           [-1, 16, 14, 14]           2,304Conv2d-326           [-1, 16, 14, 14]           2,304Conv2d-327           [-1, 16, 14, 14]           2,304Conv2d-328           [-1, 16, 14, 14]           2,304Conv2d-329           [-1, 16, 14, 14]           2,304Conv2d-330           [-1, 16, 14, 14]           2,304Conv2d-331           [-1, 16, 14, 14]           2,304Conv2d-332           [-1, 16, 14, 14]           2,304Conv2d-333           [-1, 16, 14, 14]           2,304Conv2d-334           [-1, 16, 14, 14]           2,304Conv2d-335           [-1, 16, 14, 14]           2,304Conv2d-336           [-1, 16, 14, 14]           2,304Conv2d-337           [-1, 16, 14, 14]           2,304Conv2d-338           [-1, 16, 14, 14]           2,304Conv2d-339           [-1, 16, 14, 14]           2,304Conv2d-340           [-1, 16, 14, 14]           2,304Conv2d-341           [-1, 16, 14, 14]           2,304Conv2d-342           [-1, 16, 14, 14]           2,304Conv2d-343           [-1, 16, 14, 14]           2,304Conv2d-344           [-1, 16, 14, 14]           2,304Conv2d-345           [-1, 16, 14, 14]           2,304Conv2d-346           [-1, 16, 14, 14]           2,304Conv2d-347           [-1, 16, 14, 14]           2,304Conv2d-348           [-1, 16, 14, 14]           2,304Conv2d-349           [-1, 16, 14, 14]           2,304BatchNorm2d-350          [-1, 512, 14, 14]           1,024ReLU-351          [-1, 512, 14, 14]               0
GroupedConvBlock-352          [-1, 512, 14, 14]               0Conv2d-353         [-1, 1024, 14, 14]         524,288BatchNorm2d-354         [-1, 1024, 14, 14]           2,048ReLU-355         [-1, 1024, 14, 14]               0ResNeXtBlock-356         [-1, 1024, 14, 14]               0Conv2d-357         [-1, 1024, 14, 14]       1,048,576BatchNorm2d-358         [-1, 1024, 14, 14]           2,048Conv2d-359          [-1, 512, 14, 14]         524,288BatchNorm2d-360          [-1, 512, 14, 14]           1,024ReLU-361          [-1, 512, 14, 14]               0Conv2d-362           [-1, 16, 14, 14]           2,304Conv2d-363           [-1, 16, 14, 14]           2,304Conv2d-364           [-1, 16, 14, 14]           2,304Conv2d-365           [-1, 16, 14, 14]           2,304Conv2d-366           [-1, 16, 14, 14]           2,304Conv2d-367           [-1, 16, 14, 14]           2,304Conv2d-368           [-1, 16, 14, 14]           2,304Conv2d-369           [-1, 16, 14, 14]           2,304Conv2d-370           [-1, 16, 14, 14]           2,304Conv2d-371           [-1, 16, 14, 14]           2,304Conv2d-372           [-1, 16, 14, 14]           2,304Conv2d-373           [-1, 16, 14, 14]           2,304Conv2d-374           [-1, 16, 14, 14]           2,304Conv2d-375           [-1, 16, 14, 14]           2,304Conv2d-376           [-1, 16, 14, 14]           2,304Conv2d-377           [-1, 16, 14, 14]           2,304Conv2d-378           [-1, 16, 14, 14]           2,304Conv2d-379           [-1, 16, 14, 14]           2,304Conv2d-380           [-1, 16, 14, 14]           2,304Conv2d-381           [-1, 16, 14, 14]           2,304Conv2d-382           [-1, 16, 14, 14]           2,304Conv2d-383           [-1, 16, 14, 14]           2,304Conv2d-384           [-1, 16, 14, 14]           2,304Conv2d-385           [-1, 16, 14, 14]           2,304Conv2d-386           [-1, 16, 14, 14]           2,304Conv2d-387           [-1, 16, 14, 14]           2,304Conv2d-388           [-1, 16, 14, 14]           2,304Conv2d-389           [-1, 16, 14, 14]           2,304Conv2d-390           [-1, 16, 14, 14]           2,304Conv2d-391           [-1, 16, 14, 14]           2,304Conv2d-392           [-1, 16, 14, 14]           2,304Conv2d-393           [-1, 16, 14, 14]           2,304BatchNorm2d-394          [-1, 512, 14, 14]           1,024ReLU-395          [-1, 512, 14, 14]               0
GroupedConvBlock-396          [-1, 512, 14, 14]               0Conv2d-397         [-1, 1024, 14, 14]         524,288BatchNorm2d-398         [-1, 1024, 14, 14]           2,048ReLU-399         [-1, 1024, 14, 14]               0ResNeXtBlock-400         [-1, 1024, 14, 14]               0Conv2d-401         [-1, 1024, 14, 14]       1,048,576BatchNorm2d-402         [-1, 1024, 14, 14]           2,048Conv2d-403          [-1, 512, 14, 14]         524,288BatchNorm2d-404          [-1, 512, 14, 14]           1,024ReLU-405          [-1, 512, 14, 14]               0Conv2d-406           [-1, 16, 14, 14]           2,304Conv2d-407           [-1, 16, 14, 14]           2,304Conv2d-408           [-1, 16, 14, 14]           2,304Conv2d-409           [-1, 16, 14, 14]           2,304Conv2d-410           [-1, 16, 14, 14]           2,304Conv2d-411           [-1, 16, 14, 14]           2,304Conv2d-412           [-1, 16, 14, 14]           2,304Conv2d-413           [-1, 16, 14, 14]           2,304Conv2d-414           [-1, 16, 14, 14]           2,304Conv2d-415           [-1, 16, 14, 14]           2,304Conv2d-416           [-1, 16, 14, 14]           2,304Conv2d-417           [-1, 16, 14, 14]           2,304Conv2d-418           [-1, 16, 14, 14]           2,304Conv2d-419           [-1, 16, 14, 14]           2,304Conv2d-420           [-1, 16, 14, 14]           2,304Conv2d-421           [-1, 16, 14, 14]           2,304Conv2d-422           [-1, 16, 14, 14]           2,304Conv2d-423           [-1, 16, 14, 14]           2,304Conv2d-424           [-1, 16, 14, 14]           2,304Conv2d-425           [-1, 16, 14, 14]           2,304Conv2d-426           [-1, 16, 14, 14]           2,304Conv2d-427           [-1, 16, 14, 14]           2,304Conv2d-428           [-1, 16, 14, 14]           2,304Conv2d-429           [-1, 16, 14, 14]           2,304Conv2d-430           [-1, 16, 14, 14]           2,304Conv2d-431           [-1, 16, 14, 14]           2,304Conv2d-432           [-1, 16, 14, 14]           2,304Conv2d-433           [-1, 16, 14, 14]           2,304Conv2d-434           [-1, 16, 14, 14]           2,304Conv2d-435           [-1, 16, 14, 14]           2,304Conv2d-436           [-1, 16, 14, 14]           2,304Conv2d-437           [-1, 16, 14, 14]           2,304BatchNorm2d-438          [-1, 512, 14, 14]           1,024ReLU-439          [-1, 512, 14, 14]               0
GroupedConvBlock-440          [-1, 512, 14, 14]               0Conv2d-441         [-1, 1024, 14, 14]         524,288BatchNorm2d-442         [-1, 1024, 14, 14]           2,048ReLU-443         [-1, 1024, 14, 14]               0ResNeXtBlock-444         [-1, 1024, 14, 14]               0Conv2d-445         [-1, 1024, 14, 14]       1,048,576BatchNorm2d-446         [-1, 1024, 14, 14]           2,048Conv2d-447          [-1, 512, 14, 14]         524,288BatchNorm2d-448          [-1, 512, 14, 14]           1,024ReLU-449          [-1, 512, 14, 14]               0Conv2d-450           [-1, 16, 14, 14]           2,304Conv2d-451           [-1, 16, 14, 14]           2,304Conv2d-452           [-1, 16, 14, 14]           2,304Conv2d-453           [-1, 16, 14, 14]           2,304Conv2d-454           [-1, 16, 14, 14]           2,304Conv2d-455           [-1, 16, 14, 14]           2,304Conv2d-456           [-1, 16, 14, 14]           2,304Conv2d-457           [-1, 16, 14, 14]           2,304Conv2d-458           [-1, 16, 14, 14]           2,304Conv2d-459           [-1, 16, 14, 14]           2,304Conv2d-460           [-1, 16, 14, 14]           2,304Conv2d-461           [-1, 16, 14, 14]           2,304Conv2d-462           [-1, 16, 14, 14]           2,304Conv2d-463           [-1, 16, 14, 14]           2,304Conv2d-464           [-1, 16, 14, 14]           2,304Conv2d-465           [-1, 16, 14, 14]           2,304Conv2d-466           [-1, 16, 14, 14]           2,304Conv2d-467           [-1, 16, 14, 14]           2,304Conv2d-468           [-1, 16, 14, 14]           2,304Conv2d-469           [-1, 16, 14, 14]           2,304Conv2d-470           [-1, 16, 14, 14]           2,304Conv2d-471           [-1, 16, 14, 14]           2,304Conv2d-472           [-1, 16, 14, 14]           2,304Conv2d-473           [-1, 16, 14, 14]           2,304Conv2d-474           [-1, 16, 14, 14]           2,304Conv2d-475           [-1, 16, 14, 14]           2,304Conv2d-476           [-1, 16, 14, 14]           2,304Conv2d-477           [-1, 16, 14, 14]           2,304Conv2d-478           [-1, 16, 14, 14]           2,304Conv2d-479           [-1, 16, 14, 14]           2,304Conv2d-480           [-1, 16, 14, 14]           2,304Conv2d-481           [-1, 16, 14, 14]           2,304BatchNorm2d-482          [-1, 512, 14, 14]           1,024ReLU-483          [-1, 512, 14, 14]               0
GroupedConvBlock-484          [-1, 512, 14, 14]               0Conv2d-485         [-1, 1024, 14, 14]         524,288BatchNorm2d-486         [-1, 1024, 14, 14]           2,048ReLU-487         [-1, 1024, 14, 14]               0ResNeXtBlock-488         [-1, 1024, 14, 14]               0Conv2d-489         [-1, 1024, 14, 14]       1,048,576BatchNorm2d-490         [-1, 1024, 14, 14]           2,048Conv2d-491          [-1, 512, 14, 14]         524,288BatchNorm2d-492          [-1, 512, 14, 14]           1,024ReLU-493          [-1, 512, 14, 14]               0Conv2d-494           [-1, 16, 14, 14]           2,304Conv2d-495           [-1, 16, 14, 14]           2,304Conv2d-496           [-1, 16, 14, 14]           2,304Conv2d-497           [-1, 16, 14, 14]           2,304Conv2d-498           [-1, 16, 14, 14]           2,304Conv2d-499           [-1, 16, 14, 14]           2,304Conv2d-500           [-1, 16, 14, 14]           2,304Conv2d-501           [-1, 16, 14, 14]           2,304Conv2d-502           [-1, 16, 14, 14]           2,304Conv2d-503           [-1, 16, 14, 14]           2,304Conv2d-504           [-1, 16, 14, 14]           2,304Conv2d-505           [-1, 16, 14, 14]           2,304Conv2d-506           [-1, 16, 14, 14]           2,304Conv2d-507           [-1, 16, 14, 14]           2,304Conv2d-508           [-1, 16, 14, 14]           2,304Conv2d-509           [-1, 16, 14, 14]           2,304Conv2d-510           [-1, 16, 14, 14]           2,304Conv2d-511           [-1, 16, 14, 14]           2,304Conv2d-512           [-1, 16, 14, 14]           2,304Conv2d-513           [-1, 16, 14, 14]           2,304Conv2d-514           [-1, 16, 14, 14]           2,304Conv2d-515           [-1, 16, 14, 14]           2,304Conv2d-516           [-1, 16, 14, 14]           2,304Conv2d-517           [-1, 16, 14, 14]           2,304Conv2d-518           [-1, 16, 14, 14]           2,304Conv2d-519           [-1, 16, 14, 14]           2,304Conv2d-520           [-1, 16, 14, 14]           2,304Conv2d-521           [-1, 16, 14, 14]           2,304Conv2d-522           [-1, 16, 14, 14]           2,304Conv2d-523           [-1, 16, 14, 14]           2,304Conv2d-524           [-1, 16, 14, 14]           2,304Conv2d-525           [-1, 16, 14, 14]           2,304BatchNorm2d-526          [-1, 512, 14, 14]           1,024ReLU-527          [-1, 512, 14, 14]               0
GroupedConvBlock-528          [-1, 512, 14, 14]               0Conv2d-529         [-1, 1024, 14, 14]         524,288BatchNorm2d-530         [-1, 1024, 14, 14]           2,048ReLU-531         [-1, 1024, 14, 14]               0ResNeXtBlock-532         [-1, 1024, 14, 14]               0Conv2d-533         [-1, 1024, 14, 14]       1,048,576BatchNorm2d-534         [-1, 1024, 14, 14]           2,048Conv2d-535          [-1, 512, 14, 14]         524,288BatchNorm2d-536          [-1, 512, 14, 14]           1,024ReLU-537          [-1, 512, 14, 14]               0Conv2d-538           [-1, 16, 14, 14]           2,304Conv2d-539           [-1, 16, 14, 14]           2,304Conv2d-540           [-1, 16, 14, 14]           2,304Conv2d-541           [-1, 16, 14, 14]           2,304Conv2d-542           [-1, 16, 14, 14]           2,304Conv2d-543           [-1, 16, 14, 14]           2,304Conv2d-544           [-1, 16, 14, 14]           2,304Conv2d-545           [-1, 16, 14, 14]           2,304Conv2d-546           [-1, 16, 14, 14]           2,304Conv2d-547           [-1, 16, 14, 14]           2,304Conv2d-548           [-1, 16, 14, 14]           2,304Conv2d-549           [-1, 16, 14, 14]           2,304Conv2d-550           [-1, 16, 14, 14]           2,304Conv2d-551           [-1, 16, 14, 14]           2,304Conv2d-552           [-1, 16, 14, 14]           2,304Conv2d-553           [-1, 16, 14, 14]           2,304Conv2d-554           [-1, 16, 14, 14]           2,304Conv2d-555           [-1, 16, 14, 14]           2,304Conv2d-556           [-1, 16, 14, 14]           2,304Conv2d-557           [-1, 16, 14, 14]           2,304Conv2d-558           [-1, 16, 14, 14]           2,304Conv2d-559           [-1, 16, 14, 14]           2,304Conv2d-560           [-1, 16, 14, 14]           2,304Conv2d-561           [-1, 16, 14, 14]           2,304Conv2d-562           [-1, 16, 14, 14]           2,304Conv2d-563           [-1, 16, 14, 14]           2,304Conv2d-564           [-1, 16, 14, 14]           2,304Conv2d-565           [-1, 16, 14, 14]           2,304Conv2d-566           [-1, 16, 14, 14]           2,304Conv2d-567           [-1, 16, 14, 14]           2,304Conv2d-568           [-1, 16, 14, 14]           2,304Conv2d-569           [-1, 16, 14, 14]           2,304BatchNorm2d-570          [-1, 512, 14, 14]           1,024ReLU-571          [-1, 512, 14, 14]               0
GroupedConvBlock-572          [-1, 512, 14, 14]               0Conv2d-573         [-1, 1024, 14, 14]         524,288BatchNorm2d-574         [-1, 1024, 14, 14]           2,048ReLU-575         [-1, 1024, 14, 14]               0ResNeXtBlock-576         [-1, 1024, 14, 14]               0Conv2d-577           [-1, 2048, 7, 7]       2,097,152BatchNorm2d-578           [-1, 2048, 7, 7]           4,096Conv2d-579         [-1, 1024, 14, 14]       1,048,576BatchNorm2d-580         [-1, 1024, 14, 14]           2,048ReLU-581         [-1, 1024, 14, 14]               0Conv2d-582             [-1, 32, 7, 7]           9,216Conv2d-583             [-1, 32, 7, 7]           9,216Conv2d-584             [-1, 32, 7, 7]           9,216Conv2d-585             [-1, 32, 7, 7]           9,216Conv2d-586             [-1, 32, 7, 7]           9,216Conv2d-587             [-1, 32, 7, 7]           9,216Conv2d-588             [-1, 32, 7, 7]           9,216Conv2d-589             [-1, 32, 7, 7]           9,216Conv2d-590             [-1, 32, 7, 7]           9,216Conv2d-591             [-1, 32, 7, 7]           9,216Conv2d-592             [-1, 32, 7, 7]           9,216Conv2d-593             [-1, 32, 7, 7]           9,216Conv2d-594             [-1, 32, 7, 7]           9,216Conv2d-595             [-1, 32, 7, 7]           9,216Conv2d-596             [-1, 32, 7, 7]           9,216Conv2d-597             [-1, 32, 7, 7]           9,216Conv2d-598             [-1, 32, 7, 7]           9,216Conv2d-599             [-1, 32, 7, 7]           9,216Conv2d-600             [-1, 32, 7, 7]           9,216Conv2d-601             [-1, 32, 7, 7]           9,216Conv2d-602             [-1, 32, 7, 7]           9,216Conv2d-603             [-1, 32, 7, 7]           9,216Conv2d-604             [-1, 32, 7, 7]           9,216Conv2d-605             [-1, 32, 7, 7]           9,216Conv2d-606             [-1, 32, 7, 7]           9,216Conv2d-607             [-1, 32, 7, 7]           9,216Conv2d-608             [-1, 32, 7, 7]           9,216Conv2d-609             [-1, 32, 7, 7]           9,216Conv2d-610             [-1, 32, 7, 7]           9,216Conv2d-611             [-1, 32, 7, 7]           9,216Conv2d-612             [-1, 32, 7, 7]           9,216Conv2d-613             [-1, 32, 7, 7]           9,216BatchNorm2d-614           [-1, 1024, 7, 7]           2,048ReLU-615           [-1, 1024, 7, 7]               0
GroupedConvBlock-616           [-1, 1024, 7, 7]               0Conv2d-617           [-1, 2048, 7, 7]       2,097,152BatchNorm2d-618           [-1, 2048, 7, 7]           4,096ReLU-619           [-1, 2048, 7, 7]               0ResNeXtBlock-620           [-1, 2048, 7, 7]               0Conv2d-621           [-1, 2048, 7, 7]       4,194,304BatchNorm2d-622           [-1, 2048, 7, 7]           4,096Conv2d-623           [-1, 1024, 7, 7]       2,097,152BatchNorm2d-624           [-1, 1024, 7, 7]           2,048ReLU-625           [-1, 1024, 7, 7]               0Conv2d-626             [-1, 32, 7, 7]           9,216Conv2d-627             [-1, 32, 7, 7]           9,216Conv2d-628             [-1, 32, 7, 7]           9,216Conv2d-629             [-1, 32, 7, 7]           9,216Conv2d-630             [-1, 32, 7, 7]           9,216Conv2d-631             [-1, 32, 7, 7]           9,216Conv2d-632             [-1, 32, 7, 7]           9,216Conv2d-633             [-1, 32, 7, 7]           9,216Conv2d-634             [-1, 32, 7, 7]           9,216Conv2d-635             [-1, 32, 7, 7]           9,216Conv2d-636             [-1, 32, 7, 7]           9,216Conv2d-637             [-1, 32, 7, 7]           9,216Conv2d-638             [-1, 32, 7, 7]           9,216Conv2d-639             [-1, 32, 7, 7]           9,216Conv2d-640             [-1, 32, 7, 7]           9,216Conv2d-641             [-1, 32, 7, 7]           9,216Conv2d-642             [-1, 32, 7, 7]           9,216Conv2d-643             [-1, 32, 7, 7]           9,216Conv2d-644             [-1, 32, 7, 7]           9,216Conv2d-645             [-1, 32, 7, 7]           9,216Conv2d-646             [-1, 32, 7, 7]           9,216Conv2d-647             [-1, 32, 7, 7]           9,216Conv2d-648             [-1, 32, 7, 7]           9,216Conv2d-649             [-1, 32, 7, 7]           9,216Conv2d-650             [-1, 32, 7, 7]           9,216Conv2d-651             [-1, 32, 7, 7]           9,216Conv2d-652             [-1, 32, 7, 7]           9,216Conv2d-653             [-1, 32, 7, 7]           9,216Conv2d-654             [-1, 32, 7, 7]           9,216Conv2d-655             [-1, 32, 7, 7]           9,216Conv2d-656             [-1, 32, 7, 7]           9,216Conv2d-657             [-1, 32, 7, 7]           9,216BatchNorm2d-658           [-1, 1024, 7, 7]           2,048ReLU-659           [-1, 1024, 7, 7]               0
GroupedConvBlock-660           [-1, 1024, 7, 7]               0Conv2d-661           [-1, 2048, 7, 7]       2,097,152BatchNorm2d-662           [-1, 2048, 7, 7]           4,096ReLU-663           [-1, 2048, 7, 7]               0ResNeXtBlock-664           [-1, 2048, 7, 7]               0Conv2d-665           [-1, 2048, 7, 7]       4,194,304BatchNorm2d-666           [-1, 2048, 7, 7]           4,096Conv2d-667           [-1, 1024, 7, 7]       2,097,152BatchNorm2d-668           [-1, 1024, 7, 7]           2,048ReLU-669           [-1, 1024, 7, 7]               0Conv2d-670             [-1, 32, 7, 7]           9,216Conv2d-671             [-1, 32, 7, 7]           9,216Conv2d-672             [-1, 32, 7, 7]           9,216Conv2d-673             [-1, 32, 7, 7]           9,216Conv2d-674             [-1, 32, 7, 7]           9,216Conv2d-675             [-1, 32, 7, 7]           9,216Conv2d-676             [-1, 32, 7, 7]           9,216Conv2d-677             [-1, 32, 7, 7]           9,216Conv2d-678             [-1, 32, 7, 7]           9,216Conv2d-679             [-1, 32, 7, 7]           9,216Conv2d-680             [-1, 32, 7, 7]           9,216Conv2d-681             [-1, 32, 7, 7]           9,216Conv2d-682             [-1, 32, 7, 7]           9,216Conv2d-683             [-1, 32, 7, 7]           9,216Conv2d-684             [-1, 32, 7, 7]           9,216Conv2d-685             [-1, 32, 7, 7]           9,216Conv2d-686             [-1, 32, 7, 7]           9,216Conv2d-687             [-1, 32, 7, 7]           9,216Conv2d-688             [-1, 32, 7, 7]           9,216Conv2d-689             [-1, 32, 7, 7]           9,216Conv2d-690             [-1, 32, 7, 7]           9,216Conv2d-691             [-1, 32, 7, 7]           9,216Conv2d-692             [-1, 32, 7, 7]           9,216Conv2d-693             [-1, 32, 7, 7]           9,216Conv2d-694             [-1, 32, 7, 7]           9,216Conv2d-695             [-1, 32, 7, 7]           9,216Conv2d-696             [-1, 32, 7, 7]           9,216Conv2d-697             [-1, 32, 7, 7]           9,216Conv2d-698             [-1, 32, 7, 7]           9,216Conv2d-699             [-1, 32, 7, 7]           9,216Conv2d-700             [-1, 32, 7, 7]           9,216Conv2d-701             [-1, 32, 7, 7]           9,216BatchNorm2d-702           [-1, 1024, 7, 7]           2,048ReLU-703           [-1, 1024, 7, 7]               0
GroupedConvBlock-704           [-1, 1024, 7, 7]               0Conv2d-705           [-1, 2048, 7, 7]       2,097,152BatchNorm2d-706           [-1, 2048, 7, 7]           4,096ReLU-707           [-1, 2048, 7, 7]               0ResNeXtBlock-708           [-1, 2048, 7, 7]               0
AdaptiveAvgPool2d-709           [-1, 2048, 1, 1]               0Linear-710                    [-1, 2]           4,098
================================================================
Total params: 37,555,522
Trainable params: 37,555,522
Non-trainable params: 0
----------------------------------------------------------------
Input size (MB): 0.57
Forward/backward pass size (MB): 444.08
Params size (MB): 143.26
Estimated Total Size (MB): 587.92
----------------------------------------------------------------

5. 设置超参数:定义损失函数,学习率,以及根据学习率定义优化器等

# loss_fn = nn.CrossEntropyLoss() # 创建损失函数# learn_rate = 1e-3 # 初始学习率
# def adjust_learning_rate(optimizer,epoch,start_lr):
#     # 每两个epoch 衰减到原来的0.98
#     lr = start_lr * (0.92 ** (epoch//2))
#     for param_group in optimizer.param_groups:
#         param_group['lr'] = lr# optimizer = torch.optim.Adam(model.parameters(),lr=learn_rate)
# 调用官方接口示例
loss_fn = nn.CrossEntropyLoss()# learn_rate = 1e-4  
learn_rate = 3e-4
lambda1 = lambda epoch:(0.92**(epoch//2))optimizer = torch.optim.Adam(model.parameters(),lr = learn_rate)
scheduler = torch.optim.lr_scheduler.LambdaLR(optimizer,lr_lambda=lambda1) # 选定调整方法

6. 训练函数

# 训练函数
def train(dataloader,model,loss_fn,optimizer):size = len(dataloader.dataset) # 训练集大小num_batches = len(dataloader) # 批次数目train_loss,train_acc = 0,0for X,y in dataloader:X,y = X.to(device),y.to(device)# 计算预测误差pred = model(X)loss = loss_fn(pred,y)# 反向传播optimizer.zero_grad()loss.backward()optimizer.step()# 记录acc与losstrain_acc += (pred.argmax(1)==y).type(torch.float).sum().item()train_loss += loss.item()train_acc /= sizetrain_loss /= num_batchesreturn train_acc,train_loss

7. 测试函数

# 测试函数
def test(dataloader,model,loss_fn):size = len(dataloader.dataset)num_batches = len(dataloader)test_acc,test_loss = 0,0with torch.no_grad():for X,y in dataloader:X,y = X.to(device),y.to(device)# 计算losspred = model(X)loss = loss_fn(pred,y)test_acc += (pred.argmax(1)==y).type(torch.float).sum().item()test_loss += loss.item()test_acc /= sizetest_loss /= num_batchesreturn test_acc,test_loss

8. 正式训练

import copyepochs = 60train_acc = []
train_loss = []
test_acc = []
test_loss = []best_acc = 0.0# 检查 GPU 可用性并打印设备信息
if torch.cuda.is_available():for i in range(torch.cuda.device_count()):print(f"GPU {i}: {torch.cuda.get_device_name(i)}")print(f"Initial Memory Allocated: {torch.cuda.memory_allocated(i)/1024**2:.2f} MB")print(f"Initial Memory Cached: {torch.cuda.memory_reserved(i)/1024**2:.2f} MB")
else:print("No GPU available. Using CPU.")# 多显卡设置 当前使用的是使用 PyTorch 自带的 DataParallel,后续如有需要可以设置为DistributedDataParallel,这是更加高效的方式
# 且多卡不一定比单卡效果就好,需要调整优化
# if torch.cuda.device_count() > 1:
#     print(f"Using {torch.cuda.device_count()} GPUs")
#     model = nn.DataParallel(model)
# model = model.to('cuda')for epoch in range(epochs):# 更新学习率——使用自定义学习率时使用# adjust_learning_rate(optimizer,epoch,learn_rate)model.train()epoch_train_acc,epoch_train_loss = train(train_dl,model,loss_fn,optimizer)scheduler.step() # 更新学习率——调用官方动态学习率时使用model.eval()epoch_test_acc,epoch_test_loss = test(test_dl,model,loss_fn)# 保存最佳模型到 best_modelif epoch_test_acc > best_acc:best_acc = epoch_test_accbest_model = copy.deepcopy(model)train_acc.append(epoch_train_acc)train_loss.append(epoch_train_loss)test_acc.append(epoch_test_acc)test_loss.append(epoch_test_loss)# 获取当前学习率lr = optimizer.state_dict()['param_groups'][0]['lr']template = ('Epoch:{:2d},Train_acc:{:.1f}%,Train_loss:{:.3f},Test_acc:{:.1f}%,Test_loss:{:.3f},Lr:{:.2E}')print(template.format(epoch+1,epoch_train_acc*100,epoch_train_loss,epoch_test_acc*100,epoch_test_loss,lr))# 实时监控 GPU 状态if torch.cuda.is_available():for i in range(torch.cuda.device_count()):print(f"GPU {i} Usage:")print(f"  Memory Allocated: {torch.cuda.memory_allocated(i)/1024**2:.2f} MB")print(f"  Memory Cached: {torch.cuda.memory_reserved(i)/1024**2:.2f} MB")print(f"  Max Memory Allocated: {torch.cuda.max_memory_allocated(i)/1024**2:.2f} MB")print(f"  Max Memory Cached: {torch.cuda.max_memory_reserved(i)/1024**2:.2f} MB")print('Done','best_acc: ',best_acc)
GPU 0: NVIDIA GeForce RTX 4090
Initial Memory Allocated: 151.84 MB
Initial Memory Cached: 422.00 MB
GPU 1: NVIDIA GeForce RTX 4090
Initial Memory Allocated: 0.00 MB
Initial Memory Cached: 0.00 MB
GPU 2: NVIDIA GeForce RTX 4090
Initial Memory Allocated: 0.00 MB
Initial Memory Cached: 0.00 MB
GPU 3: NVIDIA GeForce RTX 4090
Initial Memory Allocated: 0.00 MB
Initial Memory Cached: 0.00 MB
Epoch: 1,Train_acc:56.1%,Train_loss:0.737,Test_acc:51.5%,Test_loss:0.845,Lr:3.00E-04
GPU 0 Usage:Memory Allocated: 737.77 MBMemory Cached: 5010.00 MBMax Memory Allocated: 4545.57 MBMax Memory Cached: 5010.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch: 2,Train_acc:61.8%,Train_loss:0.668,Test_acc:66.9%,Test_loss:0.655,Lr:2.76E-04
GPU 0 Usage:Memory Allocated: 739.44 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.41 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch: 3,Train_acc:63.4%,Train_loss:0.650,Test_acc:60.8%,Test_loss:0.658,Lr:2.76E-04
GPU 0 Usage:Memory Allocated: 735.13 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.41 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch: 4,Train_acc:65.7%,Train_loss:0.637,Test_acc:61.3%,Test_loss:0.668,Lr:2.54E-04
GPU 0 Usage:Memory Allocated: 735.13 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.41 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch: 5,Train_acc:66.8%,Train_loss:0.633,Test_acc:65.0%,Test_loss:0.618,Lr:2.54E-04
GPU 0 Usage:Memory Allocated: 735.13 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.41 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch: 6,Train_acc:66.6%,Train_loss:0.615,Test_acc:62.7%,Test_loss:0.629,Lr:2.34E-04
GPU 0 Usage:Memory Allocated: 735.13 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.41 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch: 7,Train_acc:66.7%,Train_loss:0.608,Test_acc:64.6%,Test_loss:0.611,Lr:2.34E-04
GPU 0 Usage:Memory Allocated: 735.13 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.41 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch: 8,Train_acc:68.7%,Train_loss:0.592,Test_acc:67.1%,Test_loss:0.598,Lr:2.15E-04
GPU 0 Usage:Memory Allocated: 735.13 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.41 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch: 9,Train_acc:69.0%,Train_loss:0.598,Test_acc:67.1%,Test_loss:0.579,Lr:2.15E-04
GPU 0 Usage:Memory Allocated: 738.74 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.41 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:10,Train_acc:68.7%,Train_loss:0.575,Test_acc:66.7%,Test_loss:0.561,Lr:1.98E-04
GPU 0 Usage:Memory Allocated: 738.24 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.54 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:11,Train_acc:70.5%,Train_loss:0.571,Test_acc:72.7%,Test_loss:0.559,Lr:1.98E-04
GPU 0 Usage:Memory Allocated: 736.80 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.54 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:12,Train_acc:71.7%,Train_loss:0.565,Test_acc:68.8%,Test_loss:0.558,Lr:1.82E-04
GPU 0 Usage:Memory Allocated: 737.04 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.54 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:13,Train_acc:71.2%,Train_loss:0.570,Test_acc:73.4%,Test_loss:0.532,Lr:1.82E-04
GPU 0 Usage:Memory Allocated: 738.40 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.54 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:14,Train_acc:72.4%,Train_loss:0.553,Test_acc:70.2%,Test_loss:0.544,Lr:1.67E-04
GPU 0 Usage:Memory Allocated: 738.67 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.54 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:15,Train_acc:71.5%,Train_loss:0.554,Test_acc:70.2%,Test_loss:0.551,Lr:1.67E-04
GPU 0 Usage:Memory Allocated: 733.94 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.54 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:16,Train_acc:72.8%,Train_loss:0.551,Test_acc:69.5%,Test_loss:0.557,Lr:1.54E-04
GPU 0 Usage:Memory Allocated: 735.85 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.54 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:17,Train_acc:72.8%,Train_loss:0.528,Test_acc:70.6%,Test_loss:0.573,Lr:1.54E-04
GPU 0 Usage:Memory Allocated: 735.85 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.54 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:18,Train_acc:72.6%,Train_loss:0.546,Test_acc:70.6%,Test_loss:0.550,Lr:1.42E-04
GPU 0 Usage:Memory Allocated: 736.80 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.54 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:19,Train_acc:74.0%,Train_loss:0.523,Test_acc:74.1%,Test_loss:0.544,Lr:1.42E-04
GPU 0 Usage:Memory Allocated: 737.51 MBMemory Cached: 5024.00 MBMax Memory Allocated: 4690.54 MBMax Memory Cached: 5024.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:20,Train_acc:75.7%,Train_loss:0.494,Test_acc:73.4%,Test_loss:0.532,Lr:1.30E-04
GPU 0 Usage:Memory Allocated: 737.07 MBMemory Cached: 5122.00 MBMax Memory Allocated: 4690.54 MBMax Memory Cached: 5122.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:21,Train_acc:77.6%,Train_loss:0.469,Test_acc:74.4%,Test_loss:0.506,Lr:1.30E-04
GPU 0 Usage:Memory Allocated: 738.05 MBMemory Cached: 5122.00 MBMax Memory Allocated: 4691.07 MBMax Memory Cached: 5122.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:22,Train_acc:76.6%,Train_loss:0.488,Test_acc:76.7%,Test_loss:0.478,Lr:1.20E-04
GPU 0 Usage:Memory Allocated: 736.08 MBMemory Cached: 5122.00 MBMax Memory Allocated: 4691.07 MBMax Memory Cached: 5122.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:23,Train_acc:77.1%,Train_loss:0.485,Test_acc:72.3%,Test_loss:0.497,Lr:1.20E-04
GPU 0 Usage:Memory Allocated: 736.83 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.07 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:24,Train_acc:79.5%,Train_loss:0.454,Test_acc:76.0%,Test_loss:0.519,Lr:1.10E-04
GPU 0 Usage:Memory Allocated: 736.83 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.07 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:25,Train_acc:77.3%,Train_loss:0.476,Test_acc:76.9%,Test_loss:0.466,Lr:1.10E-04
GPU 0 Usage:Memory Allocated: 736.83 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.07 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:26,Train_acc:80.7%,Train_loss:0.436,Test_acc:79.7%,Test_loss:0.452,Lr:1.01E-04
GPU 0 Usage:Memory Allocated: 736.58 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.07 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:27,Train_acc:79.0%,Train_loss:0.429,Test_acc:78.8%,Test_loss:0.429,Lr:1.01E-04
GPU 0 Usage:Memory Allocated: 737.29 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.07 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:28,Train_acc:78.9%,Train_loss:0.433,Test_acc:79.3%,Test_loss:0.405,Lr:9.34E-05
GPU 0 Usage:Memory Allocated: 737.48 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.07 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:29,Train_acc:82.4%,Train_loss:0.389,Test_acc:85.5%,Test_loss:0.368,Lr:9.34E-05
GPU 0 Usage:Memory Allocated: 737.78 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.07 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:30,Train_acc:82.8%,Train_loss:0.388,Test_acc:81.6%,Test_loss:0.409,Lr:8.59E-05
GPU 0 Usage:Memory Allocated: 738.97 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.16 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:31,Train_acc:84.6%,Train_loss:0.361,Test_acc:83.2%,Test_loss:0.408,Lr:8.59E-05
GPU 0 Usage:Memory Allocated: 739.15 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.16 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:32,Train_acc:85.7%,Train_loss:0.336,Test_acc:84.8%,Test_loss:0.379,Lr:7.90E-05
GPU 0 Usage:Memory Allocated: 739.40 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.39 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:33,Train_acc:86.9%,Train_loss:0.306,Test_acc:86.9%,Test_loss:0.340,Lr:7.90E-05
GPU 0 Usage:Memory Allocated: 736.35 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:34,Train_acc:86.8%,Train_loss:0.311,Test_acc:88.1%,Test_loss:0.329,Lr:7.27E-05
GPU 0 Usage:Memory Allocated: 738.80 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:35,Train_acc:87.4%,Train_loss:0.312,Test_acc:82.3%,Test_loss:0.394,Lr:7.27E-05
GPU 0 Usage:Memory Allocated: 738.49 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:36,Train_acc:87.0%,Train_loss:0.313,Test_acc:87.2%,Test_loss:0.318,Lr:6.69E-05
GPU 0 Usage:Memory Allocated: 736.80 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:37,Train_acc:88.6%,Train_loss:0.280,Test_acc:88.6%,Test_loss:0.286,Lr:6.69E-05
GPU 0 Usage:Memory Allocated: 738.21 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:38,Train_acc:88.8%,Train_loss:0.270,Test_acc:86.9%,Test_loss:0.321,Lr:6.15E-05
GPU 0 Usage:Memory Allocated: 736.86 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:39,Train_acc:88.6%,Train_loss:0.283,Test_acc:83.9%,Test_loss:0.338,Lr:6.15E-05
GPU 0 Usage:Memory Allocated: 736.86 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:40,Train_acc:90.0%,Train_loss:0.249,Test_acc:89.0%,Test_loss:0.249,Lr:5.66E-05
GPU 0 Usage:Memory Allocated: 736.86 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:41,Train_acc:91.0%,Train_loss:0.226,Test_acc:91.8%,Test_loss:0.211,Lr:5.66E-05
GPU 0 Usage:Memory Allocated: 736.80 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:42,Train_acc:90.1%,Train_loss:0.242,Test_acc:91.1%,Test_loss:0.233,Lr:5.21E-05
GPU 0 Usage:Memory Allocated: 736.80 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:43,Train_acc:92.1%,Train_loss:0.196,Test_acc:89.5%,Test_loss:0.245,Lr:5.21E-05
GPU 0 Usage:Memory Allocated: 736.57 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:44,Train_acc:93.0%,Train_loss:0.198,Test_acc:90.0%,Test_loss:0.232,Lr:4.79E-05
GPU 0 Usage:Memory Allocated: 738.29 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:45,Train_acc:92.6%,Train_loss:0.195,Test_acc:92.3%,Test_loss:0.227,Lr:4.79E-05
GPU 0 Usage:Memory Allocated: 738.55 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:46,Train_acc:93.0%,Train_loss:0.184,Test_acc:91.4%,Test_loss:0.263,Lr:4.41E-05
GPU 0 Usage:Memory Allocated: 736.11 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:47,Train_acc:93.5%,Train_loss:0.164,Test_acc:93.0%,Test_loss:0.186,Lr:4.41E-05
GPU 0 Usage:Memory Allocated: 736.08 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:48,Train_acc:93.9%,Train_loss:0.163,Test_acc:91.8%,Test_loss:0.220,Lr:4.06E-05
GPU 0 Usage:Memory Allocated: 737.04 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:49,Train_acc:94.2%,Train_loss:0.163,Test_acc:93.2%,Test_loss:0.223,Lr:4.06E-05
GPU 0 Usage:Memory Allocated: 737.07 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:50,Train_acc:93.8%,Train_loss:0.161,Test_acc:92.5%,Test_loss:0.203,Lr:3.73E-05
GPU 0 Usage:Memory Allocated: 736.50 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:51,Train_acc:92.3%,Train_loss:0.174,Test_acc:92.8%,Test_loss:0.178,Lr:3.73E-05
GPU 0 Usage:Memory Allocated: 735.31 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:52,Train_acc:95.1%,Train_loss:0.134,Test_acc:92.3%,Test_loss:0.191,Lr:3.43E-05
GPU 0 Usage:Memory Allocated: 736.88 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:53,Train_acc:95.2%,Train_loss:0.148,Test_acc:93.7%,Test_loss:0.164,Lr:3.43E-05
GPU 0 Usage:Memory Allocated: 737.10 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:54,Train_acc:95.0%,Train_loss:0.119,Test_acc:93.0%,Test_loss:0.180,Lr:3.16E-05
GPU 0 Usage:Memory Allocated: 737.07 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:55,Train_acc:94.2%,Train_loss:0.143,Test_acc:91.8%,Test_loss:0.197,Lr:3.16E-05
GPU 0 Usage:Memory Allocated: 737.07 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:56,Train_acc:96.1%,Train_loss:0.111,Test_acc:93.0%,Test_loss:0.183,Lr:2.91E-05
GPU 0 Usage:Memory Allocated: 737.33 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:57,Train_acc:96.1%,Train_loss:0.102,Test_acc:94.9%,Test_loss:0.170,Lr:2.91E-05
GPU 0 Usage:Memory Allocated: 738.05 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:58,Train_acc:95.2%,Train_loss:0.120,Test_acc:93.5%,Test_loss:0.201,Lr:2.67E-05
GPU 0 Usage:Memory Allocated: 739.19 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:59,Train_acc:95.3%,Train_loss:0.136,Test_acc:94.9%,Test_loss:0.157,Lr:2.67E-05
GPU 0 Usage:Memory Allocated: 738.25 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Epoch:60,Train_acc:95.5%,Train_loss:0.106,Test_acc:93.5%,Test_loss:0.167,Lr:2.46E-05
GPU 0 Usage:Memory Allocated: 739.19 MBMemory Cached: 5124.00 MBMax Memory Allocated: 4691.79 MBMax Memory Cached: 5124.00 MB
GPU 1 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 2 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
GPU 3 Usage:Memory Allocated: 0.00 MBMemory Cached: 0.00 MBMax Memory Allocated: 0.00 MBMax Memory Cached: 0.00 MB
Done best_acc:  0.9487179487179487

9. 结果可视化

epochs_range = range(epochs)plt.figure(figsize = (12,3))plt.subplot(1,2,1)
plt.plot(epochs_range,train_acc,label = 'Training Accuracy')
plt.plot(epochs_range,test_acc,label = 'Test Accuracy')
plt.legend(loc = 'lower right')
plt.title('Training and Validation Accuracy')plt.subplot(1,2,2)
plt.plot(epochs_range,train_loss,label = 'Test Accuracy')
plt.plot(epochs_range,test_loss,label = 'Test Loss')
plt.legend(loc = 'lower right')
plt.title('Training and validation Loss')
plt.show()
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei
findfont: Generic family 'sans-serif' not found because none of the following families were found: SimHei

在这里插入图片描述

10. 模型的保存

# 自定义模型保存
# 状态字典保存
torch.save(model.state_dict(),'./模型参数/J6_ResNeXt50_model_state_dict2.pth') # 仅保存状态字典# 定义模型用来加载参数
best_model = ResNeXt50(num_classes=len(classNames)).to(device)best_model.load_state_dict(torch.load('./模型参数/J6_ResNeXt50_model_state_dict2.pth')) # 加载状态字典到模型
<All keys matched successfully>

11.使用训练好的模型进行预测

# 指定路径图片预测
from PIL import Image
import torchvision.transforms as transformsclasses = list(total_data.class_to_idx) # classes = list(total_data.class_to_idx)def predict_one_image(image_path,model,transform,classes):test_img = Image.open(image_path).convert('RGB')# plt.imshow(test_img) # 展示待预测的图片test_img = transform(test_img)img = test_img.to(device).unsqueeze(0)model.eval()output = model(img)print(output) # 观察模型预测结果的输出数据_,pred = torch.max(output,1)pred_class = classes[pred]print(f'预测结果是:{pred_class}')
# 预测训练集中的某张照片
predict_one_image(image_path='./data/mpox_recognize/Monkeypox/M01_01_04.jpg',model = model,transform = test_transforms,classes = classes)
tensor([[ 2.6236, -2.9544]], device='cuda:0', grad_fn=<AddmmBackward0>)
预测结果是:Monkeypox
classes
['Monkeypox', 'Others']


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/477305.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

采用python3.12 +django5.1 结合 RabbitMQ 和发送邮件功能,实现一个简单的告警系统 前后端分离 vue-element

一、开发环境搭建和配置 #mac环境 brew install python3.12 python3.12 --version python3.12 -m pip install --upgrade pip python3.12 -m pip install Django5.1 python3.12 -m django --version #用于检索系统信息和进程管理 python3.12 -m pip install psutil #集成 pika…

【H2O2|全栈】JS进阶知识(八)ES6(4)

目录 前言 开篇语 准备工作 浅拷贝和深拷贝 浅拷贝 概念 常见方法 弊端 案例 深拷贝 概念 常见方法 弊端 逐层拷贝 原型 构造函数 概念 形式 成员 弊端 显式原型和隐式原型 概念 形式 constructor 概念 形式 原型链 概念 形式 结束语 前言 开篇语…

订单日记为“惠采科技”提供全方位的进销存管理支持

感谢温州惠采科技有限责任公司选择使用订单日记&#xff01; 温州惠采科技有限责任公司&#xff0c;成立于2024年&#xff0c;位于浙江省温州市&#xff0c;是一家以从事销售电气辅材为主的企业。 在业务不断壮大的过程中&#xff0c;想使用一种既能提升运营效率又能节省成本…

【Isaac Sim】配置 Nucleus 本地服务器

Omniverse 提供了本地&#xff08;局域&#xff09;服务器 Nucleus&#xff0c;可以将资产上传到该服务器&#xff0c;Nucleus 能够高效地存储和管理大量三维模型和其他资产&#xff0c;确保用户可以轻松访问这些资源。它还支持多用户环境下的实时协作&#xff0c;使得不同地理…

递归-迭代

24. 两两交换链表中的节点 Leetcode 24 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 递归解法 // 注意&#xff1a;cpp …

小蒋聊技术:大数据驱动决策——技术落地与业务深度融合

时间&#xff1a;2024年 10月 23日 作者&#xff1a;小蒋聊技术 邮箱&#xff1a;wei_wei10163.com 音频: 喜马拉雅 一.数据决策&#xff0c;真的是企业的“未来”吗&#xff1f; 大家好&#xff0c;欢迎来到“小蒋聊技术”&#xff01;今天&#xff0c;我们继续聊一个让企业关…

无插件直播流媒体音视频播放器EasyPlayer.js播放器的g711系列的音频,听起来为什么都是杂音

在数字化时代&#xff0c;流媒体播放器已成为信息传播和娱乐消遣的重要工具。随着技术的进步&#xff0c;流媒体播放器的核心技术和发展趋势不断演变&#xff0c;以满足用户对于无缝播放、低延迟和高画质的需求。 EasyPlayer播放器属于一款高效、精炼、稳定且免费的流媒体播放…

UVM 验证方法学之interface学习系列文章(七)高级 《bind 操作》(4)级联

在 SystemVerilog 中,bind 操作符用于将一个模块或接口实例绑定到另一个模块或接口的层次结构中。这在很多情况下非常有用,尤其是当你需要在不修改原始模块代码的情况下,添加或替换某些组件时。bind 操作符常用于仿真和测试平台中,以便灵活地组织测试环境。 前面的文章,我…

Vue3+SpringBoot3+Sa-Token+Redis+mysql8通用权限系统

sa-token支持分布式token 前后端代码&#xff0c;地球号: bright12389

Ansys Zemax Optical Studio 中的近视眼及矫正

近视&#xff0c;通常称为近视眼&#xff0c;是一种眼睛屈光不正&#xff0c;导致远处物体模糊&#xff0c;而近处物体清晰。这是一种常见的视力问题&#xff0c;通常发生在眼球过长或角膜&#xff08;眼睛前部清晰的部分&#xff09;过于弯曲时。因此&#xff0c;进入眼睛的光…

利用FileZilla搭建ftp服务器

一 利用windows自带的ftp服务搭建服务器&#xff0c;要复杂一些&#xff0c;好处是无需借用外部软件。 也有一些好的工具&#xff0c;如FileZilla的Server版&#xff0c;构建过程简单&#xff0c;好用。 下面看看。 二 安装FileZilla Server 当前下载版本是0.9.43&#xf…

2022 年中高职组“网络安全”赛项-海南省省竞赛任务书-1-B模块B-1-Windows操作系统渗透测试

前言 本章节我将带领大家一起重新模拟操作一次Windows渗透测试模块&#xff0c;并加固的流程。 任务概览 环境部署 我的实验复现环境&#xff1a; 服务器Windows server 2008 R2 攻击机Kali Linux 场景操作系统Windows 7 额外还有台交换机支持&#xff1a; 这里我使用的是…

【滑动窗口】变种题目:leetcode76:最小覆盖子串

前言 滑动窗口是算法的数组部分中非常重要的一个内容&#xff0c;关于滑动窗口的题目&#xff0c;我已经发布过相关的变种题目文章&#xff0c;链接如下&#xff0c;欢迎访问&#xff1a; 【滑动窗口】相关题目分析讲解:leetcode209,leetcode904 如果你不了解什么是滑动窗口&a…

蚁群算法(Ant Colony Optimization, ACO)

简介 蚁群算法&#xff08;Ant Colony Optimization, ACO&#xff09;是一种基于自然启发的优化算法&#xff0c;由意大利学者马可多里戈&#xff08;Marco Dorigo&#xff09;在1992年首次提出。它受自然界中蚂蚁觅食行为的启发&#xff0c;用于解决离散优化问题。 在自然界…

1-测试go-redis缓存数据

1-测试go-redis缓存数据 1.go-redis缓存数据测试效果 a.测试页面 测试页面&#xff1a;--这里使用 Postman 来做测试 http://127.0.0.1:8000/article/getone/3 http://127.0.0.1:8000/article/getone/4 http://127.0.0.1:8000/article/getone/5b.测试效果 查看终端&#xf…

计算机毕业设计SparkStreaming+Kafka图书推荐系统 豆瓣图书数据分析可视化大屏 豆瓣图书爬虫 知识图谱 图书大数据 大数据毕业设计 机器学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

字符串的常用函数

目录 一、引入 二、13个字符串的常用函数 总结 一、引入 在C语言中&#xff0c;字符串被视为字符数组的序列&#xff0c;以空字符\0结尾。这个空字符不是数字0&#xff0c;而是一个特殊的控制字符&#xff0c;用于标记字符串的结束。例如&#xff0c;声明char name[7] {R,…

丹摩|重返丹摩(下)

目录 四.模型构建与训练 1.模型选择 (1). 机器学习模型 (2). 深度学习模型 (3). AutoML 功能 2.参数配置 (1). 模型参数 (2). 数据划分 (3). 超参数优化 3.模型训练与评估 (1). 训练模型 (2). 查看训练结果 (3). 模型评估 五.模型部署与应用 1.模型部署 (1). 直…

浪潮信息自动驾驶框架AutoDRRT 2.0,赋能高阶自动驾驶

随着自动驾驶技术的迅猛进步&#xff0c;BEVTransformer的感知模式为高阶自动驾驶带来了前所未有的精度、泛化能力和多模态融合效果&#xff0c;已成为众多顶尖汽车制造商的首选方案。然而&#xff0c;当前自动驾驶方案中的大模型算法参数规模剧增&#xff0c;对算力、数据IO及…

【电源专题】BUCK电源SW电压的平均值为什么等于输出电压?

在Buck电源测试过程中,我们会去测试SW开关节点的波形。那么从SW波形中我们能看出什么呢? 首先查看SW波形一般会看SW频率,通过SW波形的频率知道目前芯片的运行状态是什么。比如PSM还是PWM模式。 此外,还会看SW波形的占空比,通过占空比我们可以知道目前输出的状态是怎么样的…