【PyTorch】神经网络的基本骨架-nn.Module的使用以及convolution-layers卷积层介绍

前提文章目录

【PyTorch】深度学习PyTorch环境配置及安装【详细清晰】
【PyTorch】深度学习PyTorch加载数据
【PyTorch】关于Tensorboard的简单使用
【PyTorch】关于Transforms的简单使用
【PyTorch】关于torchvision中的数据集以及dataloader的使用


文章目录

nn.Module的使用

nn:Neural network 神经网络

官网链接:https://pytorch.org/docs/1.8.1/nn.html

Containers骨架Module链接:https://pytorch.org/docs/1.8.1/generated/torch.nn.Module.html#torch.nn.Module



程序中的基本使用:

python 复制代码
import torch
from torch import nn


# 创建神经网络模板   debug不会进行执行 除非调用它才会进行执行
class testModel(nn.Module):
    def __init__(self):
        super().__init__()

    def forward(self, input):
        output = input + 1  # 给一个输入直接将其输出
        return output


# 创建神经网络
testModel = testModel()   #进行debug 这是程序的开始
x = torch.tensor(1.0)
output = testModel(x)
print(output)

convolution-layers卷积层

convolution-layers链接:https://pytorch.org/docs/1.8.1/nn.html#convolution-layers

Conv2d

链接:https://pytorch.org/docs/1.8.1/nn.functional.html#conv2d

参数介绍:

  • input:输入
  • weight:权重。卷积核
  • bias:偏置
  • stride:卷积核移动的步长。可以是一个数字或一个元组(sH、sW)。默认值:1 。 sH、sW :控制横向的移动和控制纵向的移动
  • padding:填充
  • dilation:扩张 。内核元素之间的间距
  • groups:组别

卷积后的输出计算:
Stride步长设置:

用程序计算表示:

python 复制代码
import torch
import torch.nn.functional as F

# 输入数据是二维图像(2维矩阵)  看连续的([[)中括号数,有几个就是几维矩阵
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]])

# print(input.shape)  # torch.Size([5, 5])   只有高和宽
# print(kernel.shape)  # torch.Size([3, 3])

# 因为文档的输入是需要四个参数  所以这里用torch提供的尺寸变换
# 要求的是一个输入,所以放入input
# (1,1,5,5):需要变换成的样子   batch_size为1:只取一个样本; channel为1:二维灰度图  5,5: 是5x5的图像输入
input = torch.reshape(input, (1, 1, 5, 5))
kernel = torch.reshape(kernel, (1, 1, 3, 3))

print(input.shape)  # torch.Size([1, 1, 5, 5])
print(kernel.shape)  # torch.Size([1, 1, 3, 3])

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

# 步长(步径)为2
output2 = F.conv2d(input, kernel, stride=2)
print(output2)

运行结果:

解释说明:

灰度图用2维矩阵表示,通道数channel为1。彩色图用3维矩阵表示,通道数为2。

padding填充设置:

程序计算:

python 复制代码
# padding为1
output3 = F.conv2d(input, kernel, stride=1, padding=1)
print(output3)

输出结果:

可以看到输出结果的尺寸变大。

相关推荐
m4Rk_4 小时前
【论文阅读】Agent 记忆机制(83):Inside Out——用可演化 PersonaTree 构建 Agent 的核心长期记忆
论文阅读·人工智能·学习·开源·github
运行时异常4 小时前
【WMS 仓储系统集成 AI Agent 实战】第 8 讲(终篇):生产部署与并发安全——Semaphore 放进 Flux.defer 的坑,压测抓了一晚上
人工智能·安全
杨杨杨大侠4 小时前
Jev、Kev、Laya:决策模型怎么选,什么时候需要微调?
人工智能·python·agent
代码方舟4 小时前
零信任架构实战:基于天远人企关联构建自动化供应链金融网关
运维·人工智能·架构·自动化
虹科网络安全4 小时前
“顶会”看安全(十八):超越越狱:揭示由能力边界模糊引发的 LLM 应用安全风险
人工智能·安全
Maiko Star5 小时前
* LangChain 提示词模板详解:ChatPromptTemplate 的使用与高级特性
java·人工智能·langchain
鬓戈5 小时前
Rust 语言与 AI 应用生态调研及学习路径
人工智能·学习·rust
天远API5 小时前
零信任架构实战:基于天远人企关联构建自动化图谱网关
网络·人工智能·架构·自动化
爱吃提升5 小时前
文生视频模型发展趋势(2026)
人工智能·音视频
AIGS0015 小时前
什么是本体语义平台?和知识图谱、传统数据中台的区别在哪
人工智能·知识图谱·数据中台·ai问数·本体语义平台·智能数据中台