pytorch学习4-简易卷积实现

系列文章目录

  1. pytorch学习1-数据加载以及Tensorboard可视化工具
  2. pytorch学习2-Transforms主要方法使用
  3. pytorch学习3-torchvisin和Dataloader的使用
  4. pytorch学习4-简易卷积实现
  5. pytorch学习5-最大池化层的使用
  6. pytorch学习6-非线性变换(ReLU和sigmoid)
  7. pytorch学习7-序列模型搭建
  8. pytorch学习8-损失函数与反向传播
  9. pytorch学习9-优化器学习
  10. pytorch学习10-网络模型的保存和加载
  11. pytorch学习11-完整的模型训练过程

文章目录


一、简易nn

python 复制代码
class MyNN(nn.Module):#创建一个神经网络,需要继承nn.Moudle
    def __init__(self, ):
        super().__init__()
    def forward(self,input):
        output=input+1#这个nn的作用就是把输入自增一
        return output
mynn=MyNN()
x=torch.tensor(1.0)
output=mynn(x)
print(output)

二、简简易卷积

python 复制代码
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],
])
kernel=torch.tensor([#卷积核
    [1,2,1],
    [0,1,0],
    [2,1,0],
])
input=torch.reshape(input,(1,1,5,5))#torch卷积操作要求数据有四个参数,批次、通道数、高、宽,而原始的input这里只有高和宽两个参数,所以需要reshape这个转换函数来将数据转换为想要的
kernel=torch.reshape(kernel,(1,1,3,3))
print(input.shape)
print(kernel.shape)

#conv2d代表二维卷积,还有一维三维等等
output=F.conv2d(input,kernel,stride=1,padding=1)#进行卷积操作,padding=1代表进行一行列0填充,默认为0,不填充
print(output)

三、简易卷积

python 复制代码
dataset=torchvision.datasets.CIFAR10("../data",train=False,transform=torchvision.transforms.ToTensor(),download=True)
dataloader=DataLoader(dataset,batch_size=64)#这行代码将整个数据集分割成许多批,每一批有64个样本
class Mynn2(nn.Module):
    def __init__(self, ) :
        super(Mynn2,self).__init__()
        self.conv1=Conv2d(in_channels=3,out_channels=6,kernel_size=3,stride=1,padding=0)#out_channels代表输出的通道数(也就是代表经过卷积之后输出多少个图像(每一张图像都由一个卷积核生成,所以这个输出通道数也间接代表了有几个卷积核))
    def forward(self,x):
        x=self.conv1(x)#进行卷积操作
        return  x
mynn2=Mynn2()
#print(mynn2)#查看网络结构
writer=SummaryWriter("logs")
step=0
for data in dataloader:
    imgs,target=data
    output=mynn2(imgs)
    print(imgs.shape)
    print(output.shape)#这两行可以看出,输入的3通道输出变成了6通道
    writer.add_images("我是输入",imgs,step)

    output=torch.reshape(output,(-1,3,30,30))#这个是因为,输出通道有六个,无法显示,那么可以将输出修改为3个通道,和输入一样,这个函数有四个参数,第一个参数设置为-1就会自动计算合适值

    writer.add_images("我是输出",output,step)
    step=step+1
writer.close()

总结

以上就是今天要讲的内容,从易到难进行简易卷积实现

相关推荐
IT_陈寒28 分钟前
Vue这个坑我跳了两次,原来问题出在这
前端·人工智能·后端
weiwei2284435 分钟前
神经网络模型导出及开放标准格式ONNX
pytorch·onnx
新新技术迷1 小时前
Node给AI接口做SSE代理与鉴权
人工智能
redreamSo2 小时前
大模型是不是到顶了?瓶颈到底在哪
人工智能·openai
Oo9202 小时前
Tool Use 背后的技术逻辑
人工智能
姗姗来迟了2 小时前
Vue3封装AI流式对话组件踩坑实录
人工智能
码上天下2 小时前
用Pinia管理AI多会话状态
人工智能
用户054324329703 小时前
Next.js接大模型流式SSE实操踩坑
人工智能
Assby3 小时前
从 Function Calling 到 MCP:理解 Agent 工具调用的底层通信机制
人工智能·后端
小星AI3 小时前
Claude Code 从入门到精通,一步到位
人工智能