一、神经网络基骨架nn.module
导包
from torch import nnimport torch
定义模型
class TEST(nn.Module):def __init__(self):super().__init__()def forward(self, input):output = input + 1return output
测试
test = TEST()x = torch.tensor(1.0)output = test(x)

二、 卷积操作
- torch.size() 含义

- 第一维数字5:表示batch_size
- 第二维数字2:表示通道数
- 第三维数字3:表示高度
- 第四维数字4:表示宽度
- tips : reshape操作中的-1表示自动计算

- 卷积层
导包
import torchimport torchvisionfrom torch import nnfrom torch.nn import Conv2dfrom torch.utils.data import DataLoaderfrom tensorboardX import SummaryWriter
加载数据
dataset = torchvision.datasets.CIFAR10("./dataset",train=False,transform = torchvision.transforms.ToTensor(),download = False)dataloader = DataLoader(dataset, batch_size =64)
定义模型
class Test(nn.Module):def __init__(self):super().__init__()# in_channels为输入通道数# out_channels为输出通道数# kernel_size为卷积核大小# stride为步长self.conv1 = Conv2d(in_channels=3, out_channels=6, kernel_size=3, stride=1, padding=0)def forward(self,x):x = self.conv1(x)return x
运行
test = Test()writer = SummaryWriter("logs")step = 0for idx,data in enumerate(dataloader):# imgs-> (64,3,32,32)imgs, tragets = data# output ->(64,6,30,30) (bchw)# output中的c为6,因为卷积操作中out_channels为6output = test(imgs)writer.add_images("img", imgs, idx)# 使用reshape将(64,6,30,30) reshape为(128,3,30,30)writer.add_images("output",output.reshape(-1,3,30,30), idx)writer.close()
