p15神经网络_卷积层
import torch
import torchvision
from torch import nn
from torch.nn import Conv2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
#准备测试集
dataset = torchvision.datasets.CIFAR10("dataset", train=False, transform=torchvision.transforms.ToTensor(),
download=True)
dataloader = DataLoader(dataset, batch_size=64)
#声明一个土堆类,继承自nn.Moudle父类
class Tudui(nn.Module):
def __init__(self) -> None:#使用super调用了父类nn.Module中的__init__构造方法
super().__init__()
# in_channels:输入图像(矩阵形式)的通道数,out_channels输出图像的通道数,卷积核为3,无填充
self.conv1 = Conv2d(in_channels=3, out_channels=6, kernel_size=3, stride=1, padding=0)
def forward(self, x):#声明一个forward方法,该方法的功能是使输入的图片进行一次二维卷积,并返回卷积完成后的图片
x = self.conv1(x)
return x
tudui = Tudui()#实例化对象tudui
writer = SummaryWriter("p15logs")#创建日志
print(tudui) #输出实例化对象tudui中的内容(包含一次二维卷积)
step = 0 #日志步长标识符
for data in dataloader:#循环遍历整个测试集(batch_size = 64)
imgs, target = data#赋值图片,类别
output = tudui(imgs)#经过土堆神经网络之后的输出(神经网络中包含二维卷积层)
print(imgs.shape)#输出imgs的形状
print(output.shape)#输出 经卷积后的output
# torch.Size([64, 3, 32, 32])
writer.add_images("input", imgs, step)#展示日志
# torch.Size([64, 6, 30, 30])
# writer.add_images("output", output, step)
# torch.Size([64, 6, 30, 30])>>torch.Size([?, 3, 30, 30])
output = torch.reshape(output, (-1, 3, 30, 30))#重塑图片形状
writer.add_images("output", output, step)#展示日志
step = step + 1#日志步长+1
writer.close()
p16最大池化层的使用
#最大池化层的使用
import torch
import torchvision
from torch import nn
from torch.nn import MaxPool2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
#准备测试数据集
dataset = torchvision.datasets.CIFAR10("dataset", train=False, transform=torchvision.transforms.ToTensor(),
download=True)
dataloader = DataLoader(dataset, batch_size=64)
# input = torch.tensor([[1, 2, 0, 3, 1],
# [0, 1, 2, 3, 1],
# [1, 2, 1, 0, 0],
# [5, 2, 3, 1, 1],
# [2, 1, 0, 1, 1]], dtype=torch.float32
#
# )
# input = torch.reshape(input, (1, 1, 5, 5))
# tudui = Tudui()
# output = tudui(input)
# print(output)
class Tudui(nn.Module):#声明一个Tudui类继承自父类
def __init__(self) -> None:#使用super调用了父类nn.Module中的__init__构造方法
super().__init__()
# in_channels:输入图像(矩阵形式)的通道数,out_channels特征图
self.maxpool1 = MaxPool2d(kernel_size=3, ceil_mode=False)
def forward(self, input):#声明一个forward方法,该方法的功能是使输入的图片进行一次最大池化,并返回最大池化完成后的图片
output = self.maxpool1(input)
return output
tudui = Tudui()#实例化对象tudui
writer = SummaryWriter("p16logs")#创建日志
step = 0#日志步长标识符
for data in dataloader:#遍历测试集
imgs, target = data##赋值图片,类别
output = tudui(imgs)#经土堆神经网络之后的输出(神经网络包含最大池化层)
writer.add_images("imgs", imgs, step)#展示日志
writer.add_images("output", output, step)#展示日志
step = step + 1#步长+1
writer.close()
p17非线性激活
#p17非线性激活
import torch
import torchvision
from torch import nn
from torch.nn import MaxPool2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
from torch.nn import ReLU
from torch.nn import Sigmoid
# input = torch.tensor([[1, -0.5],
# [-1, 3]])
# input = torch.reshape(input, (1, 1, 2, 2))
# tudui = Tudui()
# output = tudui(input)
# print(output)
#准备数据集
dataset = torchvision.datasets.CIFAR10("dataset", train=False, transform=torchvision.transforms.ToTensor(),
download=True)
dataloader = DataLoader(dataset, batch_size=64)
class Tudui(nn.Module):#声明一个Tudui类继承自父类
def __init__(self) -> None:#使用super调用了父类nn.Module中的__init__构造方法
super().__init__()
# in_channels:输入图像(矩阵形式)的通道数,out_channels特征图
self.relu1 = ReLU()#relu层
self.sigmoid1 =Sigmoid()#sigmoid层
def forward(self, input):#声明一个forward方法,该方法的功能是使用sigmoid非线性激活函数
output = self.sigmoid1(input)
return output
tudui = Tudui()
writer = SummaryWriter("p17logs")
step = 0
for data in dataloader:
imgs, target = data
output = tudui(imgs)
writer.add_images("input", imgs, step)
writer.add_images("output", output, step)
step = step + 1
writer.close()
p18线性层及其他层介绍
import torch
import torchvision
from torch import nn
from torch.nn import MaxPool2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
from torch.nn import ReLU
from torch.nn import Sigmoid
from torch.nn import Linear
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) -> None:#使用super调用了父类nn.Module中的__init__构造方法
super().__init__()
# in_channels:输入图像(矩阵形式)的通道数,out_channels特征图
self.linera1 = Linear(196608, 10)
def forward(self, input):#声明一个forward方法,该方法的功能是使输入的图片进行一次线性层
output = self.linera1(input)
return output
tudui = Tudui()#实例化对象tudui
for data in dataloader:#循环遍历数据集
imgs, target = 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)#输出经土堆神经网络操作后的形状
标签:__,nn,记录,self,torch,学习,2023.4,import,output From: https://www.cnblogs.com/zxpython/p/17293753.html