【深度学习笔记】3_10 多层感知机的PyTorch实现
注:本文为《动手学深度学习》开源内容,仅为个人学习记录,无抄袭搬运意图
3.10 多层感知机的简洁实现
下面我们使用PyTorch来实现上一节中的多层感知机。首先导入所需的包或模块。
import torch
from torch import nn
from torch.nn import init
import numpy as np
import sys
sys.path.append("..")
import d2lzh_pytorch as d2l
3.10.1 定义模型
和softmax回归唯一的不同在于,我们多加了一个全连接层作为隐藏层。它的隐藏单元个数为256,并使用ReLU函数作为激活函数。
num_inputs, num_outputs, num_hiddens = 784, 10, 256#定义了神经网络的结构
net = nn.Sequential(d2l.FlattenLayer(), #即把多维的输入一维化,常用在从卷积层到全连接层的过渡nn.Linear(num_inputs, num_hiddens), #这是一个全连接层(也叫线性层或密集层),它接受 num_inputs 个输入,并输出 num_hiddens 个结果。nn.ReLU(), #这是一个激活函数层,它使用 ReLU(Rectified Linear Unit)函数作为激活函数。ReLU 函数将所有负值置为 0,而正值则保持不变。这有助于网络学习非线性关系。nn.Linear(num_hiddens, num_outputs), #这是另一个全连接层,它接受 num_hiddens 个输入(即上一个隐藏层的输出),并输出 num_outputs 个结果。这个输出层通常不包含激活函数,因为最后的输出将被解释为每个类别的概率(通过 softmax 函数)。)#初始化网络中所有参数的值
for params in net.parameters():init.normal_(params, mean=0, std=0.01)
net.parameters() 返回一个包含网络中所有参数(权重和偏置)的迭代器。
init.normal_ 是一个就地(in-place)操作,它会直接修改传入的参数张量(params),而不是创建一个新的张量。
mean=0, std=0.01 指定了正态分布(高斯分布)的均值和标准差,用于生成初始化值。这里使用了较小的标准差(0.01),意味着初始化值将接近于 0,但会有一定的随机性。这种初始化方法有助于网络更快地收敛,但也可能导致训练过程中的一些不稳定性。
3.10.2 读取数据并训练模型
我们使用与3.7节中训练softmax回归几乎相同的步骤来读取数据并训练模型。
注:由于这里使用的是PyTorch的SGD而不是d2lzh_pytorch里面的sgd,所以就不存在3.9节那样学习率看起来很大的问题了。
batch_size = 256
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
loss = torch.nn.CrossEntropyLoss()optimizer = torch.optim.SGD(net.parameters(), lr=0.5)num_epochs = 5
d2l.train_ch3(net, train_iter, test_iter, loss, num_epochs, batch_size, None, None, optimizer)
输出:
epoch 1, loss 0.0030, train acc 0.712, test acc 0.744
epoch 2, loss 0.0019, train acc 0.823, test acc 0.821
epoch 3, loss 0.0017, train acc 0.844, test acc 0.842
epoch 4, loss 0.0015, train acc 0.856, test acc 0.842
epoch 5, loss 0.0014, train acc 0.864, test acc 0.818
小结
- 通过PyTorch可以更简洁地实现多层感知机。
注:本节除了代码之外与原书基本相同,原书传送门
相关文章:
【深度学习笔记】3_10 多层感知机的PyTorch实现
注:本文为《动手学深度学习》开源内容,仅为个人学习记录,无抄袭搬运意图 3.10 多层感知机的简洁实现 下面我们使用PyTorch来实现上一节中的多层感知机。首先导入所需的包或模块。 import torch from torch import nn from torch.nn import …...
输入法在 Android13上候选词 候选区域 不显示的问题
背景 自研的输入法发现在 Android13 平台上不显示候选区域,在之前平台上以及需求是输入英文时不显示,中文需要显示。 最终解决办法:setExtractViewShown(false) Override public View onCreateCandidatesView() {...setExtractViewShown(f…...
Java 面向对象进阶 18 JDK8、9开始新增的方法;接口的应用;适配器设计模式;内部类(黑马)
一、JDK8开始新增的方法 默认方法不是抽象方法,所以不强制被重写: 但是如果被重写,就要去掉default关键字: public可以省略,但是default不可以省略: public是灰色的,代表可以省略 但是default是…...
数据结构-二分搜索树(Binary Search Tree)
一,简单了解二分搜索树 树结构: 问题:为什么要创造这种数据结构 1,树结构本身是一种天然的组织结构,就好像我们的文件夹一样,一层一层的. 2,树结构可以更高效的处理问题 二,二分搜索树的基础 1、二叉树 2,二叉树的重要特性 满二叉树 总结: 1. 叶子结点出现在二叉树的最…...
YOLO如何训练自己的模型
目录 步骤 一、打标签 二、数据集 三、跑train代码出模型 四、跑detect代码出结果 五、详细操作 步骤 一、打标签 (1)在终端 pip install labelimg (2)在终端输入labelimg打开 如何打标签: 推荐文章…...
05 EXTI外部中断
一、中断系统 中断系统:管理和执行中断的逻辑结构。中断:在主程序运行过程中,出现了特定的中断触发条件——中断源,使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继…...
2024.2.23
1.1.1 信号默认、捕获、忽略处理(普通信号) #include <myhead.h> void handler(int signo) {if(signoSIGINT){printf("用户键入 ctrlc\n");} } int main(int argc, const char *argv[]) {//忽略信号if(signal(SIGINT,SIG_IGN)SIG_ERR){perror("signal er…...
PHP实现分离金额和其他内容便于统计计算
得到的结果可以粘贴到excel计算 <?php if($_GET["x"] "cha"){ $tips isset($_POST[tips]) ? $_POST[tips] : ; $pattern /(\d\.\d|\d)/; $result preg_replace($pattern, "\t\${1}\t", $tips); echo "<h2><strong>数…...
基础数据结构和算法《》
递归 1.递归应该一种比较常见的实现一些特殊代码逻辑时需要做的,但常常也是最绕的一种方式,在解释递归 之前,我们用循环和递归来做个比较1.1.如果你打开一扇门后,同样发现前方也有一扇们,紧接着你又打开下一扇门...直…...
[设计模式Java实现附plantuml源码~行为型]对象间的联动~观察者模式
前言: 为什么之前写过Golang 版的设计模式,还在重新写Java 版? 答:因为对于我而言,当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言,更适合用于学习设计模式。 为什么类图要附上uml 因为很…...
vue3+js 实现记住密码功能
常见的几种实现方式 1 基于spring security 的remember me 功能 localStorage 除非主动清除localStorage 里的信息 ,不然永远存在,关闭浏览器之后下次启动仍然存在 存放数据大小一般为5M 不与服务器进行交互通信 cookies 可以…...
基于单片机的太阳能电池板自动跟踪系统的研究
摘要 伴随着人类社会的发展,人口基数越来越大,电量消耗巨大,传统发电原 料污染环境的同时,可用量日益减少,给人类未来生产生活带来了一定的威胁, 因而解决日益剧增的用电量,寻求一种新能源显得极其重要。论文正是基于此 背景下,针对当前太阳能电池板采光率低、自动化水…...
React 模态框的设计(二)
自定义组件是每个前端开发者必备的技能。我们在使用现有框架时难免有一些超乎框架以处的特别的需求,比如关于弹窗,每个应用都会用到,但是有时我们使用的框架中提供的弹窗功能也是功能有限,无法满足我们的应用需求,今天…...
操作符详解3
✨✨ 欢迎大家来到莉莉的博文✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 前面我们已经讲过算术操作符、赋值操作符、逻辑操作符、条件操作符和部分的单目操作 符,今天继续介绍一部分。 目录 1.操作符的分类 2…...
【C语言基础】:操作符详解(一)
文章目录 操作符详解1. 操作符的分类2. 二进制和进制转换2.1 什么是二进制、八进制、十进制、十六进制2.1.1 二进制和进制转换2.1.2 二进制转十进制2.2.3 二进制转八进制2.2.4 二进制转十六进制 3. 源码、反码、补码4. 移位操作符4.1 左移操作符4.2 右移操作符 5. 位操作符&…...
通俗易懂分析:Vite和Webpack的区别
1、对项目构建的理解 先从浏览器出发, 浏览器是由浏览器内核和JS引擎组成;浏览器内核编译解析html代码和css代码,js引擎编译解析JavaScript代码;所以从本质上,浏览器只能识别运行JavaScript、CSS、HTML代码。 而我们在…...
OpenCart程序结构与业务逻辑
一、程序业务逻辑说明 在 OpenCart 中,index.php 文件是整个应用程序的入口文件,它负责初始化应用程序并调度请求。以下是 index.php 文件加载执行的流程: 1. **设置路径常量:** - index.php 首先定义了一些重要的路径常量&…...
软件License授权原理
软件License授权原理 你知道License是如何防止别人破解的吗?本文将介绍License的生成原理,理解了License的授权原理你不但可以防止别人破解你的License,你甚至可以研究别人的License找到它们的漏洞。喜欢本文的朋友建议收藏+关注,方便以后复习查阅。 什么是License? 在…...
C/C++实现老鼠走迷宫
老鼠形象可以辨认,可以用上下左右操纵老鼠;正确检测结果,若老鼠在规定的时间内走到粮仓,提示成功,否则提示失败。代码分为3个文件:main.cpp、play.h、play.cpp。 main.cpp: #include <iostream> #include <…...
[Linux]文件基础-如何管理文件
回顾C语言之 - 文件如何被写入 fopen fwrite fread fclose fseek … 这一系列函数都是C语言中对文件进行的操作: int main() {FILE* fpfopen("text","w");char str[20]"write into text";fputs(str,fp);fclose(fp);return 0; }而上…...
Arduino_ConnectionHandler库:嵌入式网络连接状态管理与自适应重连
1. Arduino_ConnectionHandler 库深度解析:嵌入式网络连接管理的工程实践指南1.1 库定位与核心价值Arduino_ConnectionHandler是 Arduino 官方生态中面向物联网终端设备的网络连接抽象管理层,其设计目标并非替代底层通信协议栈(如 WiFiClient…...
专业数据恢复工具对决:UFS Explorer与R-Studio的实战选型指南
1. 数据恢复工具的核心价值与选型逻辑 当硬盘突然罢工或重要文件被误删时,专业数据恢复软件就像数字世界的急救医生。我经历过太多凌晨三点被叫醒处理服务器崩溃的案例,选对工具往往能决定数据"复活"的成功率。UFS Explorer和R-Studio这对老对…...
别再只查列表了!Flowable 7.x 待办任务‘状态’字段的实战设计与前端动态渲染
Flowable 7.x 待办任务状态引擎设计与前端动态交互实战 在当今企业级应用开发中,工作流引擎已成为复杂业务流程管理的核心基础设施。作为Activiti的下一代产品,Flowable 7.x在任务状态管理和前后端协同方面提供了更强大的能力。本文将深入探讨如何基于Fl…...
告别手动操作!Open-AutoGLM让iPhone听懂人话,自动执行指令
告别手动操作!Open-AutoGLM让iPhone听懂人话,自动执行指令 1. 引言 你是否厌倦了每天重复点击手机屏幕的操作?是否希望手机能像真人助理一样理解你的需求并自动完成任务?今天我要介绍的Open-AutoGLM正是这样一个革命性的AI手机智…...
别再手算LLC参数了!用Mathcad Prime 8.0自动生成增益曲线,附我验证过的产品级模板
告别手工计算:用Mathcad Prime 8.0打造智能LLC设计工作流 深夜的办公室里,电源工程师小王盯着屏幕上密密麻麻的公式叹了口气——这已经是本周第三次因为手工计算LLC谐振参数出错导致样机测试失败了。在中小型电源企业,像小王这样的场景每天都…...
Phi-4-mini-reasoning部署实操手册:supervisor服务管理与日志排查指南
Phi-4-mini-reasoning部署实操手册:supervisor服务管理与日志排查指南 1. 模型概述 Phi-4-mini-reasoning 是一个专注于推理任务的文本生成模型,特别适合处理数学题、逻辑题、多步分析和简洁结论输出。与通用聊天模型不同,它采用"题目…...
Fish-Speech-1.5技术报告解读:LLM如何提升TTS表现
Fish-Speech-1.5技术报告解读:LLM如何提升TTS表现 1. 引言 你有没有想过,为什么有些语音合成系统听起来还是那么"机械",而有些已经几乎和真人无异?这背后的技术差距到底在哪里?今天我们要聊的Fish-Speech-…...
QwQ-32B多模态应用实践:文本与图像联合处理
QwQ-32B多模态应用实践:文本与图像联合处理 最近在折腾AI模型的时候,发现很多朋友对多模态应用特别感兴趣。所谓多模态,简单说就是让AI能同时理解文字和图片,甚至还能把两者结合起来处理。这听起来挺酷的,但实际操作起…...
vLLM-v0.17.1保姆级教程:vLLM + Weights Biases 实验跟踪实践
vLLM-v0.17.1保姆级教程:vLLM Weights & Biases 实验跟踪实践 1. vLLM框架简介 vLLM是一个专注于大语言模型推理和服务的开源库,以其出色的性能和易用性在开发者社区中广受欢迎。这个项目最初由加州大学伯克利分校的天空计算实验室发起࿰…...
vscode|无法连接到远程扩展主机服务器 (错误: CodeError(AsyncPipeFailed(Os { code: 2, kind: NotFound, message: “No such
无法连接到远程主机服务器(错误: CodeError(AsyncPipeFailed(Os { code: 2, kind: NotFound, message: "No such file or directory" })))这是一个典型的 VSCode Remote-SSH 连接失败 错误。虽然本地网络正常、服务器在线,但 VSCod…...
