Pytorch作为深度学习的框架之一,提供了许多模型,如CNN、RNN、LSTM等。它通过将模型封装,简化了用户操作,极大的方便用户。通过学习《PyTorch深度学习》和PyTorch文档,我将学到的知识进行总结。
对于实际问题,我们需要数据、模型、以及其他辅助函数进行解决。我下面主要从这三个方面总结所学的知识。
数据处理
在介绍数据处理前,我们需要知道PyTorch所能处理的数据对象。
1.Tensor
为了提高运算速度,PyTorch和numpy一样,提供了一种抽象的数据类型:Tensor。该数据抽象提供了GPU和CPU的简易切换。它是一种包含单一数据类型元素的多维矩阵。
1.1Tensor数据类型
在cpu上定义了其中张量类型,分别是torch.FloatTensor、torch.DoubleTensor 、torch.IntTensor、torch.ShortTensor、torch.LongTensor、torch.ByteTensor、torch.CharTensor 。PyTorch默认的是torch.FloatTensor。
1.2Tensor创建与生成
example1=torch.Tensor([[1,2,3],[4,5,6]]) #float型的二维向量
example2=torch.rand((2,5)) #2行5列的矩阵
example3=torch.range(start=1, end=4, step=1) #output=[1,2,3]
example4=torch.arange(start=1, end=4, step=1) #output=[1,2,3,4]
example5=torch.from_numpy(numpy_data) #将numpy数据类型转换为Tensor
example6=torch.eye(3) #生成一个3*3的单位阵
上面是一些简单的张量的生成,对于图片,文字等复杂的数据类型又如何进行张量转换?
from torchvision import datasets,transforms
import torch.utils.data as data
transformation=transforms.Compose([transforms.Resize((224,224)),transforms.ToTensor(), transforms.Normalize([0.485,0.456,0.406],[0.229,0.224,0.225])])
train=datasets.MNIST('data/',train=True,transform=transformation,download=True)
train_loader=data.DataLoader(train,batch_size=32,shuffle=True)
#train_loader可以通过train_loader.dataset访问数据。该张量共有4维,第一维表示样本序号。第二维表示图片数据或标记,第三四维表示图片的宽和高(这是train数据的各个维度的含义)。DataLoader只是使该数据可以进行批处理。
上面这个代码处理PyTorch自带的数据集,对于自己下面这种形式的数据可以用以下代码处理。
数据文件夹形式:
#root/dog/001.png
#root/dog/010.png
#root/dog/011.png
#root/cat/001.png
#root/cat/010.png
#root/cat/011.png
from torchvision import datasets
transformation=transforms.Compose([transforms.Resize((224,224)),transforms.ToTensor(), transforms.Normalize([0.485,0.456,0.406],[0.229,0.224,0.225]

本文介绍了PyTorch中的数据处理,重点讲解了Tensor的概念、创建与生成,包括不同类型和如何将复杂数据转化为张量。在模型部分,概述了自定义模型的过程,详细讨论了CNN和RNN/LSTM的结构,并提及了迁移学习和中间层输出的可视化。此外,还提到了其他辅助函数在实际项目中的应用,如训练过程中的图片显示和可视化工具。

8738

被折叠的 条评论
为什么被折叠?



