1、使用线性层将输入图片的形状进行压缩:
代码如下:
import torch
import torchvision
from torch import nn
from torch.nn import Linear
from torch.utils.data import DataLoader
dataset = torchvision.datasets.CIFAR10("dataset", train=False, transform=torchvision.transforms.ToTensor(),
download=True)
dataloader = DataLoader(dataset, batch_size=64)
class Tudui(nn.Module):
def __init__(self):
super(Tudui, self).__init__()
self.linear1 = Linear(196608, 10)
def forward(self, input):
output = self.linear1(input)
return output
tudui = Tudui()
for data in dataloader:
imgs, targets = data
print(imgs.shape)
# output = torch.reshape(imgs, (1,1,1,-1))
output = torch.flatten(imgs)
print(output.shape)
output = tudui(output)
print(output.shape)
可以看到:
原来图片是 ([64, 3, 32, 32]),
首先经过reshape操作,将其变为 ([1, 1, 1, 196608]),
这里,该作用相当于:
torch.flatten(imgs)
再通过线性层,变为 ([1, 1, 1, 10])