Pytorch3_torchvision、.设置随机种子、GPU相关配置、卷积层参数设置、池化层参数设置、池化层参数设置

1.基本知识
1.1.import 与 from…import
  • import 模块:导入一个模块;注:相当于导入的是一个文件夹,是个相对路径。
  • from…import:导入了一个模块中的一个函数;注:相当于导入的是一个文件夹中的文件,是个绝对路径。
  •   import support
      #现在可以调用模块里包含的函数了
      support.print_func("Runoob")
    
  •   from support import *
      # 现在可以调用模块里包含的函数了
      print_func("Runoob")
    
1.2.torchvision

torchvision是独立于pytorch的关于图像操作的一些方便工具库。
torchvision的详细介绍在:https://pypi.org/project/torchvision/0.1.8/
torchvision主要包括一下几个包:

  •   vision.datasets : 几个常用视觉数据集,可以下载和加载
      vision.models : 流行的模型,例如 AlexNet, VGG, and ResNet 以及 与训练好的参数。
      vision.transforms : 常用的图像操作,例如:随机切割,旋转等。
      vision.utils : 用于把形似 (3 x H x W) 的张量保存到硬盘中,
      				 给一个mini-batch的图像可以产生一个图像格网。
    
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
from torchvision import datasets,transforms

print("PyTorch Version:",torch.__version__)
1.3.设置随机种子
  • 神经网络都需要初始化,那么如何初始化?
    怎么保证初始化每次都相同?
  • 这时候使用同样的随机初始化种子即可保证!!!
1.3.1.为当前GPU设置随机种子
  •   torch.cuda.manual_seed(args.seed)
    
1.3.2.为所有的GPU设置种子
  •   torch.cuda.manual_seed_all(args.seed) 
    
1.3.3…为当前CPU设置随机种子
  •   torch.manual_seed(args.seed)
    

1.4.GPU相关配置

1.4.1.检测GPU是否存在?返回值use_cuda为True则表示存在,为False则不存在
  •   use_cuda = torch.cuda.is_available()
    
1.4.2.设置

执行结果:在这里插入图片描述

  •   device = torch.device("cuda:0" if use_cuda else "cpu")  #use_cuda 为True表示有GPU
      print("device 类型:",device.type)
      print("device 序号:",device.index)
      print(device)
    
1.4.3.kwargs是GPU设置参数,kwargs = {‘num_workers’:1,‘pin_memory’:True}
  • num_workers:使用多进程加载的进程数,0代表不使用多进程
  • pin_memory:是否将数据保存在pin memory区,pin memory中的数据转到GPU会快一些
1.5.数据加载函数(数据迭代器)——torch.utils.data.DataLoader
  • 在训练模型时使用到此函数,用来把训练数据分成多个batch,
    此函数每次抛出一个batch数据,直至把所有的数据都抛出,也就是个数据迭代器
  •   torch.utils.data.DataLoader(dataset, 	#数据集
                          batch_size=1, 	#batch大小,每次抛出1个batch
                          shuffle=False, #是否重新打乱数据
                          sampler=None, 
                          batch_sampler=None,
                          num_workers=0, 
                          collate_fn=None, 
                          pin_memory=False, 
                          drop_last=False, 
                          timeout=0, 
                          worker_init_fn=None, 
                          multiprocessing_context=None, 
                          generator=None
                          )
    
1.5.1.torchvision的1个包,vision.datasets
  • datasets.MNIST('./mnist_data', 
      					#root:存在MNIST/processed/training.pt和
      					   MNIST/processed/test.pt的数据集的根目录
                   train = True, #如果true,从training.pt创建数据集,false则从test.pt创建数据集
                   download=True,#如果ture,从网上自动下载,如果已经存在则不再下载
                                 
                                 
                        #transform 接受一个图像,返回变换后的图像的函数,相当于图像先预处理下
                        #常用的操作如 ToTensor, RandomCrop,Normalize等. 
                        #他们可以通过transforms.Compose被组合在一起 
                    transform=transforms.Compose([
                   		 #.ToTensor()将shape为(H, W, C)的nump.ndarray或img转为shape为(C, H, W)的tensor
                    transforms.ToTensor(),  
       			   		 #.Normalize作用就是.ToTensor将输入归一化到(0,1)后,
                    	 #再使用公式”(x-mean)/std”,将每个元素分布到(-1,1)   
                    transforms.Normalize((0.1307,),(0.3081,)) #0.1307、0.3081是从本数据集计算出来的
                                ]))
    

2.CNN模型相关

2.1.卷积层参数设置:torch.nn.Conv2d()
  •   #torch.nn.Conv2d(in_channels: int,   输入图像通道数,手写数字图像为1,彩色图像为3
      #                out_channels: int, 输出通道数,这个等于卷积核的数量
      #                kernel_size: Union[T, Tuple[T, T]], 卷积核大小
      #                stride: Union[T, Tuple[T, T]] = 1, 步长
      #                padding: Union[T, Tuple[T, T]] = 0, 控制zero-padding的数目。
      #                dilation: Union[T, Tuple[T, T]] = 1, (扩张):控制kernel点(卷积核点)的间距
      #                groups: int = 1,  (卷积核个数):通常来说,卷积个数唯一,但是对某些情况,可以设置范围在1~in_channels中数目的卷积核:
      #                bias: bool = True, :在输出中添加一个可学习的偏差。
      #                padding_mode: str = 'zeros')  'zeros', 'reflect', 'replicate' or 'circular'. Default: 'zeros'
    
2.2.池化层参数设置:torch.nn.MaxPool2d()
  •   #torch.nn.MaxPool2d(kernel_size: Union[T, Tuple[T, ...]],    - max pooling的窗口大小,
      #                   stride: Optional[Union[T, Tuple[T, ...]]] = None,  - max pooling的窗口移动的步长。默认值是kernel_size
      #                   padding: Union[T, Tuple[T, ...]] = 0, - 输入的每一条边补充0的层数
      #                   dilation: Union[T, Tuple[T, ...]] = 1,  – 一个控制窗口中元素步幅的参数
      #                   return_indices: bool = False,  - 如果等于True,会返回输出最大值的序号,对于上采样操作会有帮助
      #                   ceil_mode: bool = False) - 如果等于True,计算输出信号大小的时候,会使用向上取整,代替默认的向下取整的操作
    

3.初始化模型和定义优化函数

在这里插入图片描述

  • 3.1.优化器中的momentum参数
    如果上一次的momentum(即v)与这一次的负梯度方向是相同的,那这次下降的幅度就会加大,
所以这样做能够达到加速收敛的过程。
lr = 0.01
如果上一次的momentum(即v)与这一次的负梯度方向是相同的,那这次下降的幅度就会加大,
所以这样做能够达到加速收敛的过程。
momentum = 0.5
model = Net().to(device)
optimizer = optim.SGD(model.parameters(), lr=lr, momentum=momentum)
### 回答1: 你好,以下是在 PyTorch 中调用 torchvision.models.ConvNeXt 的代码,使 pretrained=False: ```python import torchvision.models as models model = models.ConvNeXt50(pretrained=False) ``` 你可以通过将 `pretrained` 参数设置为 `False` 来加载未经过预训练的 ConvNeXt 模型。 ### 回答2: 在PyTorch中调用torchvision.models.ConvNeXt并设置pretrained=False的代码如下: ```python import torch import torchvision.models as models # 定义ConvNeXt模型 model = models.convnet(ConvNeXt=True, pretrained=False) # 使用预训练的参数 pretrained_model = models.convnet(ConvNeXt=True, pretrained=True) # 打印模型结构 print(model) ``` 上述代码中,首先导入了PyTorch库和torchvision.models模块。 然后,通过调用models.convnet(ConvNeXt=True, pretrained=False)函数来创建一个没有预训练参数的ConvNeXt模型。我们可以根据自己的需求自定义该模型的各种参数,例如输入图片的尺寸、输入通道的数量等等。 如果需要使用预训练的参数,则可以通过调用models.convnet(ConvNeXt=True, pretrained=True)函数创建一个包含预训练参数的ConvNeXt模型。 最后,通过print(model)语句打印出该ConvNeXt模型的结构信息。 通过以上代码,我们可以实现在PyTorch中调用torchvision.models.ConvNeXt,并设置pretrained=False。 ### 回答3: 要在PyTorch中调用torchvision.models.ConvNeXt,并将pretrained设置为False,可以按照以下步骤进行操作: 首先,需要导入相关的库和模块: ```python import torchvision.models as models ``` 接下来,可以通过调用ConvNeXt模型来创建一个实例,并将pretrained设置为False: ```python model = models.convnet.ConvNeXt(pretrained=False) ``` 通过这个实例,你可以开始使用模型进行推理或训练。 完整的代码示例如下: ```python import torchvision.models as models model = models.convnet.ConvNeXt(pretrained=False) # 进行推理或训练的代码 ``` 以上代码可以创建一个没有预训练权重的ConvNeXt模型实例,你可以根据自己的需求在模型上进行进一步的操作。注意,ConvNeXt模型需要PyTorch的1.7.0版本或更高版本以及Torchvision的0.8.0版本或更高版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值