深度学习pytorch代码:卷积神经网络模型module的搭建、卷积层conv_1 conv_2

这篇博客介绍了如何使用PyTorch构建自定义的神经网络模型,展示了一个简单的线性模型LR的实现,并通过实例解释了卷积层的工作原理。此外,还展示了在CIFAR10数据集上应用卷积神经网络(Conv2d)的步骤,以及如何使用tensorboard进行可视化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

module是所有神经网络模块的基类,我们自己构造的模型也应该继承这个类。

import torch
from torch import nn

class LR(nn.Module):
    def __init__(self) -> None:   # 重写方法快捷键 alt+insert
        super().__init__()
    def forward(self, input):
        output = input + 1
        return output


lrp = LR()
x = torch.Tensor(1.0)
output = lrp(x)
print(output)

 卷积层 

import torch
import torch.nn.functional as F
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))   # 括号里面是想reshape成的形状  batchsize数和通道数
kernel = torch.reshape(kernel, (1, 1, 3, 3))

print(input.shape)
print(kernel.shape)



output = F.conv2d(input, kernel, stride=1)
print(output)

 conv2d:在由多个输入平面组成的输入数据上应用二维卷积

此为二维卷积核,其核有长和宽之分(多数情况为正方形)

import torch
from mmcv.cnn import Conv2d
from torch import nn
import torchvision
from mmcv import DataLoader
from torch.utils.tensorboard import SummaryWriter

dataset = torchvision.datasets.CIFAR10(r"C:\Users\123\Desktop\python4.7\test03\data", train=False, transform=torchvision.transforms.ToTensor(),
                                       download=True)          # 这里的train表示的是需要训练数据集还是测试数据集

dataloader = DataLoader(dataset, batch_size=64)

class LR(nn.Module):
    def __init__(self):         # 初始化方法
        super(LR, self).__init__()
        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

lrp = LR()
# print(lrp)
writer = SummaryWriter("../logs")
step = 0
for data in dataloader:
    imgs, targets = data
    output = lrp(imgs)
    # print(output)
    # print(imgs.shape)
    # print(output.shape)

    # torch.Size([64, 3, 32, 32])
    writer.add_images("input", imgs, step, dataformats='NCHW')
    # torch.Size([64, 6, 30, 30])  # 彩色图像是3个channel,6个channel不知道怎样显示

    output = torch.reshape(output, (-1, 3, 30, 30))    # -1具体值会根据后面给出的结果进行计算
    writer.add_images("output", output, step,  dataformats='NCHW')
    step = step+1
    writer.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值