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

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)

二、简简易卷积

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)

三、简易卷积

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()

总结

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

相关推荐

  1. pytorch学习4-简易实现

    2023-12-06 16:20:03       69 阅读
  2. 利用pytorch实现形式的ResNet

    2023-12-06 16:20:03       58 阅读
  3. pytorch学习(二)、网络的构建和

    2023-12-06 16:20:03       71 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-06 16:20:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-06 16:20:03       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-06 16:20:03       82 阅读
  4. Python语言-面向对象

    2023-12-06 16:20:03       91 阅读

热门阅读

  1. BiLSTM-CRF的中文命名实体识别

    2023-12-06 16:20:03       58 阅读
  2. 关于STM32G0 FLASH 写入时出现PGSERR的一种处理办法

    2023-12-06 16:20:03       58 阅读
  3. 管理Android12系统的WLAN热点

    2023-12-06 16:20:03       50 阅读
  4. Android AIDL实现开放系统级API 提供三方app调用

    2023-12-06 16:20:03       40 阅读
  5. spark不同结构Dataset合并

    2023-12-06 16:20:03       51 阅读
  6. 云原生高级--shell自动化脚本备份

    2023-12-06 16:20:03       66 阅读
  7. SCAU:18043 找出3个数中最大的数

    2023-12-06 16:20:03       55 阅读
  8. 关于python vue influxdb的一切 笔记

    2023-12-06 16:20:03       61 阅读
  9. SD-WAN异地组网提升多元企业网络体验

    2023-12-06 16:20:03       61 阅读
  10. 数据结构--堆排序

    2023-12-06 16:20:03       41 阅读
  11. swiper/vue 获取 swiper实例方法

    2023-12-06 16:20:03       62 阅读
  12. 【华为交换】交换机MSTP+VRRP配置

    2023-12-06 16:20:03       64 阅读