pytorch 学习笔记------线性层

注意事项:

1.Linear是来自nn模块下的

from torch.nn import Linear
2.flatten是来自torch模块下的和nn是平级的
from torch import nn, flatten

3.展平操作不仅仅是把一张图片进行展平,而是把一个batch里面的所有图片都进行展平,然后再连接在一起

    imgs,targets = data
    print(imgs.shape)
    imgs = flatten(imgs)#展平处理,包括把batch一起展平
    print(imgs.shape)

  

 4.__init__方法 里面self.linear不是单纯的变量,而是指代对象的变量。

 def __init__(self) -> None:
        super().__init__()
        self.linear = Linear(196608,10)#用liner变量指向Linear对象


    def forward(self,input):
        output = self.linear(input)#为什么属性这里可以传入参数---------》因为liner是实例化对象
        return output

 下面展示完整代码

import torchvision
from torch import nn, flatten
from torch.nn import Linear
from torch.utils.data import DataLoader
from torchvision import transforms





test_set = torchvision.datasets.CIFAR10("./datasets2",train=False,transform=transforms.ToTensor(),download=True)

test_loader = DataLoader(dataset=test_set,batch_size=64)



class zj_linear(nn.Module):
    def __init__(self) -> None:
        super().__init__()
        self.linear = Linear(196608,10)#用liner变量指向Linear对象


    def forward(self,input):
        output = self.linear(input)#为什么属性这里可以传入参数---------》因为liner是实例化对象
        return output

zj_linear_1 = zj_linear()

for data in test_loader:
    imgs,targets = data
    print(imgs.shape)
    imgs = flatten(imgs)#展平处理,包括把batch一起展平
    print(imgs.shape)
    output = zj_linear_1(imgs)
    print(output.shape)

你可能感兴趣的:(python,pytorch,深度学习)