当前位置:   article > 正文

寒假学习Day 5:PyToch学习(二)_sample = next(iter(train_set))

sample = next(iter(train_set))

寒假学习Day 5:PyToch学习(二)

CNN

数据准备
import torch
import torchvision
import torchvision.transforms as transforms
train_set=torchvision.datasets.FashionMNIST(
    root='./data/FashionMNIST'
    ,train=True
    ,download=True
    ,transform=transforms.Compose([
        transforms.ToTensor()
    ])
)
train_loader=torch.utils.data.DataLoader(train_set,batch_size=10)#训练加载器,使用的数据加载构造器,设置批处理大小为10,如果不设置则默认为1
import numpy as np
import matplotlib.pyplot as plt
torch.set_printoptions(linewidth=120)
len(train_set)#训练集数
train_set.train_labels#类标签
train_set.train_labels.bincount()#每个类的样本数
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 查看单个训练数据样例
sample=next(iter(train_set))#将一个训练集对象传递给python内置的内部函数,返回迭代器的下一个项目
len(sample)#2,因为包含数据和标签
type(sample)#tuple
image,label=sample
image.shape
plt.imshow(image.squeeze(),cmap='gray')
print('label:',label)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

  • 处理批量和数据加载器

10个一批

batch=next(iter(train_loader))
images,labels=batch
grid=torchvision.utils.make_grid(images,nrow=10)
#创建一个网格,图像作为第一个参数,nrow指定每行的图像数量
plt.figure(figsize=(15,15))
plt.imshow(np.transpose(grid,(1,2,0)))
print('labels:',labels)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述
100个一批

train_loader=torch.utils.data.DataLoader(train_set,batch_size=100)
batch=next(iter(train_loader))
images,labels=batch
grid=torchvision.utils.make_grid(images,nrow=10)
plt.figure(figsize=(15,15))
plt.imshow(np.transpose(grid,(1,2,0)))
plt.savefig('clothes')
print('labels:',labels)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

构建
  • 简单网络
class Network:
    def __init__(self):
        self.layer=None
    def forward(self,t):
        t=self.layer(t)
        return t
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • pytorch神经网络
import torch.nn as nn
class Network(nn.Module):
    def __init__(self):
        super(Network,self).__init()
        self.layer=None
    def forward(self,t):
        t=self.layer(t)
        return t
            
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 拓展pytorch nn.moudle类
 class Network(nn.Module):
    def __init__(self):
        super(Network,self).__init__()
        self.conv1=nn.Conv2d(in_channels=1,out_channels=6,kernel_size=5)#复合层
        self.conv2=nn.Conv2d(in_channels=6,out_channels=12,kernel_size=5)
        
        self.fc1=nn.Linear(in_features=12*4*4,out_features=120)#线性/全连接层/dense
        self.fc2=nn.Linear(in_features=120,out_features=60)
        self.out=nn.Linear(in_features=60,out_features=10)
        
    def forward(self,t):
        #implement the forward pass
        return t
network=Network()
network            
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

kernel_size 卷积核 卷积滤波器
out_channels 输出通道(与滤波器数量一致)
out_features 输出特征

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/263794
推荐阅读
  

闽ICP备14008679号