pytorch的学习笔记

一 cuda

  2006年,NVIDIA公司发布了CUDA(Compute Unified Device Architecture),是一种新的操作GPU计算的硬件和软件架构,是建立在NVIDIA的GPUs上的一个通用并行计算平台和编程模型,它提供了GPU编程的简易接口,基于CUDA编程可以构建基于GPU计算的应用程序
  CPU是用于负责逻辑性比较强的计算,GPU专注于执行高度线程化的并行处理任务。所以在GPU执行计算任务的时候GPU和CPU是联合执行任务的,并且GPU是作为CPU的“运算辅助结构”。 CPU所在位置称为为主机端(host),而GPU所在位置称为设备端(device)。
  下面就是本机pytorch的cuda是否可以工作的代码:

import torch
print(torch.cuda.is_available())

  结果为True,显然是可以工作的
在这里插入图片描述

二 pytorch加载数据

(1)Dataset

  Dataset是里面的一个需要继承以及重写的类,这个类通常是用于提供一种方式去获取每一个条数据以及对应数据的label。在这个类当中我们要写三个方法

①__init__(self)

  这个方法用于构造一些全局变量,便于接下来几个方法的调用。如图所示:
pytorch的学习笔记_第1张图片

②__getitem__(self,index):

  getitem方法是python类编程里面的一种非常神奇的方法,如果给类定义了__getitem__方法,则当按照键取值时,可以直接返回__getitem__方法执行的结果。如下图所示:
pytorch的学习笔记_第2张图片
  这里程序的输出结果是151515,我们可以看出s[5]s[5]s[5]当中的555作为参数被传了进去,并且直接返回了__getitem__(5)执行的结果
  我们就要利用__getitem__方法这一个特性来返回数据集里面每一条数据以及对应的标签,如下图所示:
pytorch的学习笔记_第3张图片

③__len__(self,index):返回数据集的大小
    def __len__(self):
        return len(self.imformation)

  一般在编程的时候先在__init__(self)里面就要分好类而后将其设置为全局变量,后面的方法不用再做类似的事情。后面的两个方法就各司其职。

(2)DataLoader

  dataloader 是一个加载器,将数据加载到神经网络中。类比成手(神经网络),dataloader 每次从dataset 中去取数据,怎么取,通过 dataloader 参数进行设置。可以使用以下参数进行初始化,
pytorch的学习笔记_第4张图片
  代码如下所示:

test_loader = DataLoader(dataset=test_data, batch_size=64, shuffle=Falsefor data in test_loader:
    imgs, targets = data

  代码中的每一个datadatadata里面都有646464个加载的数据集里面的训练样本

三 torch.nn(搭建网络与传播过程要用到)

  我们咋爱搭建网络的时候一般要重写两种方法
  ①__init__()方法:这种方法是初始化全局变量便于调用,如下方代码:

 def __init__(self):
        super().__init__()
        self.Sigmoid=torch.nn.Sigmoid()

  在以后的forwardforwardforward函数里面SigmoidSigmoidSigmoid就是非线性激活函数SigmoidSigmoidSigmoid,方便还可以使用nn.Sequentialnn.Sequentialnn.Sequential来把一堆结构连起来当作一个完整的架构如下所示:

self.classifier=nn.Sequential(
            nn.Linear(6*6*128,2048),
            nn.ReLU(inplace=True),
            nn.Dropout(0.5),
            nn.Linear(2048,2048),
            nn.ReLU(inplace=True),
            nn.Dropout(),
            nn.Linear(2048,num_classes),
        )

  在forwardforwardforward函数里面classifierclassifierclassifi

你可能感兴趣的:(算法)