Pytorch学习笔记——线性层和非线性层的使用

文章目录

    • 1. 前言
    • 2. 导入必要的库
    • 3. 加载数据集
    • 4. 定义线性层网络结构
    • 5. 实例化网络并打印输出
    • 6. 定义非线性层网络结构
    • 7. 总结

1. 前言

在深度学习中,线性层和非线性层是构建神经网络的基本单元。本文将通过PyTorch实现一个简单的网络,详细讲解线性层与非线性层的使用和区别。

2. 导入必要的库

首先,我们需要导入PyTorch以及一些常用的模块:

import torch
from torch import nn
import torchvision
from torch.utils.data import DataLoader

3. 加载数据集

使用torchvision加载CIFAR-10数据集,并将其转换为Tensor格式。

dataset = torchvision.datasets.CIFAR10(root="data1", train=False, transform=torchvision.transforms.ToTensor(), download=True)
dataloader = DataLoader(dataset, batch_size=64, drop_last=True)
  • root="data1":数据存储路径。
  • train=False:加载测试集。
  • transform=torchvision.transforms.ToTensor():将图像数据转换为Tensor。
  • download=True:如果数据集不存在,则下载。
  • drop_last=True:如果最后一个batch大小小于batch_size,则丢弃。

4. 定义线性层网络结构

构建一个包含线性层的简单神经网络:

class NN(nn.Module):def __init__(self):super(NN, self).__init__()self.linear1 = nn.Linear(196608, 10)  # 定义一个线性层def forward(self, input):output = self.linear1(input)  # 前向传播return output
  • nn.Linear(196608, 10):定义一个线性层,输入维度为196608,输出维度为10。

5. 实例化网络并打印输出

使用DataLoader加载数据,遍历数据并打印输出结果。

mynn = NN()  # 实例化网络for data in dataloader:imgs, targets = dataprint(imgs.shape)  # 打印图像的形状output = torch.flatten(imgs)  # 展平图像print(output.shape)  # 打印展平后的形状output = mynn(output)  # 输入到网络中print(output.shape)  # 打印输出的形状print("------------------")
  • torch.flatten(imgs):将图像展平为一维。
  • 将展平后的图像输入到网络中,得到输出。

输出结果:

torch.Size([64, 3, 32, 32])
torch.Size([196608])
torch.Size([10])
------------------

每次遍历数据加载器,我们可以看到原始图像的形状,展平后的形状,以及通过线性层后的输出形状。

6. 定义非线性层网络结构

为了演示非线性层,我们可以在网络中加入激活函数,例如ReLU(Rectified Linear Unit):

class NNWithNonLinearity(nn.Module):def __init__(self):super(NNWithNonLinearity, self).__init__()self.linear1 = nn.Linear(196608, 10)self.relu = nn.ReLU()  # 定义ReLU激活函数def forward(self, input):output = self.linear1(input)output = self.relu(output)  # 应用激活函数return output
  • nn.ReLU():定义ReLU激活函数。
  • 将线性层的输出通过ReLU激活函数,增加非线性。

实例化非线性网络并打印输出:

mynn_nonlin = NNWithNonLinearity()for data in dataloader:imgs, targets = dataoutput = torch.flatten(imgs)output = mynn_nonlin(output)print(output)print("------------------")

7. 总结

线性层和非线性层是神经网络的基本构件。线性层执行线性变换,而非线性层(例如激活函数)引入非线性,从而使网络能够拟合复杂的函数。本文通过实例演示了如何在PyTorch中使用这些层,理解了它们的工作原理和应用。

通过这种方式,我们可以更好地理解和构建复杂的神经网络,提高模型的表现力和泛化能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/47929.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

园区AR导航系统构建详解:从三维地图构建到AR融合导航的实现

随着现代园区规模的不断扩大与功能的日益复杂,传统的二维地图导航已难以满足访客高效、精准定位的需求。园区内部错综复杂的布局、频繁变更的商户位置常常让访客感到迷茫,造成寻路上的时间浪费。园区AR导航系统以创新的技术手段,破解了私域地…

同三维T610UH2L2-4K60 USB双路高清HDMI采集卡:高清HDMI采集卡

采集2路4K60HDMI信号,带2路HDMI环出,带1路LINE IN1路MIC和1路LINE OUT,4K60,USB3.0免驱 来百度APP畅享高清图片 高清HDMI采集卡 一、产品介绍 同三维T610UH2L2-4K60是一款USB双路4K60HDM采集卡,可采集双路4K60超高清HDMI信号,分…

单例模式~

概要 确保一个类只有一个实例,并提供一个全局访问点来访问该实例。 主要解决的问题 频繁创建和销毁全局使用的实例,减少开销。 解决思路 如果有该实例就返回,没有就创建。 应用场景 数据库连接池、线程池、spring中service等 几种实现…

[web]-反序列化漏洞-easy入门

打开网站看到代码&#xff1a; <?php highlight_file(__FILE__); class easy{ public $cmd; public function __wakeup(){ system($this->cmd); } } unserialize($_GET[pop]); ?> 是一个简单的反序列化题目&#xff0c;在本地启动php_study,生成序列化字符串&…

fatal error解决方法的详细教程,电脑出现错误代码fatal error问题

电脑出现“fatal error”&#xff08;致命错误&#xff09;通常指的是操作系统、应用程序或电脑硬件在执行期间遇到了非常严重的问题&#xff0c;导致程序不能正常继续运行。这种错误往往需要立即关注和解决&#xff0c;因为它可能影响到数据完整性、系统安全或者用户体验。 导…

JVM(day2)经典垃圾收集器

经典垃圾收集器 Serial收集 使用一个处理器或一条收集线程去完成垃圾收集工作&#xff0c;更重要的是强调在它进行垃圾收集时&#xff0c;必须暂停其他所有工作线程&#xff0c;直到它收集结束。 ParNew收集器 ParNew 收集器除了支持多线程并行收集之外&#xff0c;其他与 …

手写简易版Spring IOC容器01【学习】

文章目录 BeanDefinitionbeanDefinition类 单例对象单例对象注册(SingletonBeanRegistry)DefaultSingletonBeanRegistry 模板方法 BeanFactoryBeanFactory接口AbstractBeanFactory 抽象工厂模板 (getBean)AbstractAutowireCapableBeanFactory (createBean 创建bean)DefaultList…

大根堆的实现和堆排序

//交换 public static void swap(int[] arr , int i , int j){arr[i] arr[i] ^arr[j];arr[j] arr[i] ^arr[j];arr[i] arr[i] ^arr[j]; } //大根堆 public static class MyMaxHeap{private int[] heap;private final int limit;private int heapSize;public MyMaxHeap(int limit…

北京邮电大学,中央空调的分户计费系统

北京邮电大学 中央空调如何公平、公正、合理的收取费用&#xff0c;一直都是各建筑管理者的首要问题。北京邮电大学也面临着能源分配不公&#xff0c;学校管理者空调收费管理困难等问题。根据学校的具体情况&#xff0c;拓森为其制定了一套中央空调管理运营方案—无线中央空调…

利用docker和docker-compose部署airflow

先决条件 内存需要至少有4GB 环境准备 部署安装docker sudo dnf install -y docker sudo systemctl enable docker --now sudo usermod -aG docker $USER newgrp docker exec bash 部署安装docker-compose # docker-compose (latest version) $-> sudo curl -L htt…

一个小问题导致,AI大模型集体翻车?

9.11大还是9.9大&#xff1f; 这两天大家都在说ChatGPT大模型翻车了 &#xff01; 这到底是怎么个事儿呢&#xff1f; 原来是最近有人想ChatGPT等大模型提了一个简单的问题&#xff1a; 9.11 大还是 9.9 大&#xff1f; 答案显而易见&#xff0c;然而众多大模型却给出了错误…

初学Linux之常见指令(下)

初学Linux之常见指令&#xff08;下&#xff09; 文章目录 初学Linux之常见指令&#xff08;下&#xff09;1. echo 指令2. cat 指令3. more 指令4. less 指令5. head 和 tail 指令6. date 指令7. cal 指令8. which 指令9. alias 指令10. find 指令11. grep 指令12. zip 和 unz…

vue排序

onEnd 函数示例&#xff0c;它假设 drag.value 是一个包含多个对象&#xff08;每个对象至少包含 orderNum 和 label 属性&#xff09;的数组&#xff0c;且您希望在拖动结束后更新所有元素的 orderNum 以反映新的顺序&#xff1a; function onEnd(e) { // 首先&#xff0c;确…

单链表<数据结构 C版>

目录 概念 链表的单个结点 链表的打印操作 新结点的申请 尾部插入 头部插入 尾部删除 头部删除 查找 在指定位置之前插入数据 在任意位置之后插入数据 测试运行一下&#xff1a; 删除pos结点 删除pos之后结点 销毁链表 概念 单链表是一种在物理存储结构上非连续、非顺序…

熵、交叉熵、KL散度

这里写目录标题 熵KL散度引入交叉熵。交叉熵的二分类公式&#xff1a; 再次理解SoftMax函数结束 熵 熵&#xff0c;是一个物理上的概念&#xff0c;表示一个系统的不确定性程度&#xff0c;或者表示一个系统的混乱程序。 下边是信息熵的演示&#xff1a; 信息熵的公式如下&…

Vue:axios请求数据转存leanCloud

思路&#xff1a; 采用axios请求需要的数据&#xff0c;查看leanCloud中数据批量存储的格式&#xff0c;将两个数据进行对比&#xff0c;将请求得到的数据封装为云服务存储的格式&#xff0c;再发leanCloud存储数据的请求完成转存 1.封装js代码 //批量操作新增数据 import r…

【计算机视觉前沿研究 热点 顶会】CVPR 2024中与域适应、分布外目标检测相关的论文

测试时间线性分布外检测 分布外&#xff08; OOD&#xff09;检测旨在通过在输入样本显著偏离训练分布&#xff08;分布中&#xff09;时触发警报来解决神经网络的过度置信度预测&#xff0c;这表明输出可能不可靠。当前的 OOD 检测方法探索各种线索来识别 OOD 数据&#xff0…

【Docker】Docker-compose 单机容器集群编排工具

目录 一.Docker-compose 概述 1.容器编排管理与传统的容器管理的区别 2.docker-compose 作用 3.docker-compose 本质 4.docker-compose 的三大概念 二.YML文件格式及编写注意事项 1.yml文件是什么 2.yml问价使用注意事项 3.yml文件的基本数据结构 三.Docker-compose …

MySQL简介以及对数据库的操作

一、什么是数据库 1.数据库&#xff08;Database&#xff0c;简称DB&#xff09;概念&#xff1a; 长期存放在计算机内&#xff0c;有组织、可共享的大量数据的集合&#xff0c;是一个 数据“仓库”。 2、数据库的特点 结构化&#xff1a;数据在数据库中的存储可以依靠二 维表…

鸿蒙语言基础类库:【@system.sensor (传感器)】

传感器 说明&#xff1a; 从API Version 8开始&#xff0c;该接口不再维护&#xff0c;推荐使用新接口[ohos.sensor]。本模块首批接口从API version 4开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。该功能使用需要对应硬件支持&#xff0c;仅支持…