当前位置: 首页 > news >正文

Pytorch-速查表-常用层和模块以及使用方法

Pytorch常用层和模块速查表

本文章会持续更新,目前已包含
Flatten层的使用和图示
Linear层的使用和图示
ReLU层的使用和图示
Softmax层的使用和图示

之前的文章已经完成了FashionMNIST分类网络的搭建。现在我们来总结一下里面用到的layer,用一个3x28x28的minibatch来看看每一层以及模块的作用是什么。

我们先rand出一个3x28x28的随机数据:

input_image = torch.rand(3,28,28)
print(input_image.size())

在这里插入图片描述

其代表着3张28x28灰度图的照片,作为一个minibatch。

现在我会将它传入各种不同的层,看看每个层的作用会是什么。

nn.Flatten

nn.Flatten, 中文名叫展平层,他会对一个batch中每一张图片从一个2D的28x28的图片展平为一个1D的,长度为784的tensor。(默认dim=0的维度为batch维度,且保持不变)

flatten = nn.Flatten() # 实例化一个展平层
flat_images = flatten(input_image_
print(flat_image.size())

在这里插入图片描述

nn.Linear

nn.Linear,中文名叫线性层,也叫全连接层,本质上就是一个矩阵相乘加上偏置,其作用是将上一层的信息整合,在这里你可以理解成对着图片写短综述或者说简报,以供后续层的继续整合和决策。
在这里插入图片描述
使用需要指定单个样本输入的in_features单个样本输出的维度out_features,在我们的例子中, 它们分别是784和20:

layer1 = nn.Linear(in_features=784, out_features=20)
hidden1 = layer1(flat_image)
print(hidden1.size())

layer会对batch中的每个样本应用自己的处理手段:
在这里插入图片描述

nn.ReLU

这个层叫ReLU激活层,会对每个输入的元素进行一个ReLU函数的处理操作,其函数如下所示:
在这里插入图片描述
其使用方法也很简单:

print(f"Before ReLU: {hidden1}\n\n")
hidden1 = nn.ReLU()(hidden1)
print(f"After ReLU: {hidden1}")

在这里插入图片描述
ReLU层属于激活层的一种,核心作用是映入非线性,之所以要引入 ReLU,是因为如果没有它,神经网络无论有多少层,都只能处理线性问题。因为每层输出的都是上一层输入的线性变换。这样堆叠多层神经网络,其效果就等同于一个单层网络(矩阵乘矩阵还是矩阵)。

nn.Sequential

这个是演一个pytorch的模块,我比较喜欢叫它顺序容器。其内部是按顺序存放的各种layer,当数据通过这个容器的时候,会依次经过里面的layer,最后获得输出,这个一般是用来封装自己做的模块的。

seq_modules = nn.Sequential(flatten,layer1,nn.ReLU(),nn.Linear(20, 10)
)
input_image = torch.rand(3,28,28)
logits = seq_modules(input_image)

在这里插入图片描述

nn.Softmax

我们上面最后一个输出的线性层的值是在[-infty, infty]之间,要想把这10个神经元的输出调整成概率输出,就需要应用Softmax层,这里指定dim=1维度的数据进行softmax。

softmax = nn.Softmax(dim=1)
pred_probab = softmax(logits)

在这里插入图片描述

Softmax的原理如下图所示,负责把每个神经元的输出映射到一个类别概率。
在这里插入图片描述

http://www.dtcms.com/a/314277.html

相关文章:

  • FPGA实现Aurora 8B10B数据回环传输,基于GTP高速收发器,提供6套工程源码和技术支持
  • 三防平板电脑是什么?这款三防平板支持红外测温!
  • Ribbon 核心原理与架构详解:服务负载均衡的隐形支柱
  • 生产环境中基于Istio的Kubernetes多集群灰度发布架构实战经验分享
  • Django 性能优化详解:从数据库到缓存,打造高效 Web 应用
  • JavaScript案例(待办事项列表)
  • vue--for循环中使用子组件,ref应该如果调用
  • SP30D120CTT大电流碳化硅二极管全面解析:TO-247封装的高功率解决方案
  • Minio部署和客户端使用 - 版本 2025-05-24T17-08-30Z
  • 计算机网络:网络号和网络地址的区别
  • [激光原理与应用-135]:光学器件 - 透镜的本质是利用材料对光的折射特性,通过特定形状的表面设计,实现对光线的会聚、发散或成像控制的光学元件
  • HTTP各个版本对比
  • 【YOLO11】【DeepSort】【NCNN】使用YOLOv11和DeepSort进行行人目标跟踪。(基于ncnn框架,c++实现)
  • 文件与目录操作命令
  • Kubernetes(k8s)之认识Pod
  • k8s简介
  • Go语言 并发安全sync
  • 深度解析:CPU 与 GPU 上的张量运算,为何“快”与“慢”并非绝对?
  • 亚马逊撤离Google购物广告:重构流量生态的战略博弈
  • 从零开始搞定类与对象(中)
  • 企业架构被大模型重构:大模型驱动下的数字基建革命与机遇
  • 操作系统:RPC 中可能遇到的问题(Issues in RPC)
  • Ubuntu系统VScode实现opencv(c++)图像一维直方图
  • Git如何同步本地与远程仓库并解决冲突
  • C#利用unity游戏引实现开发设备仿真系统步骤
  • 《解构Angular组件变化检测:从自动到手 动的效能突破》
  • Unity Shader编程完全入门指南:从零到实战 C# 实战案例
  • 雷达系统工程学习:自制极化合成孔径雷达无人机
  • 【OpenGL】LearnOpenGL学习笔记03 - 着色器
  • 2025年半导体探针卡市场深度调研:规模数据、竞争格局