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

快速入门深度学习1(用时1h)

速通《动手学深度学习》1

  • 写在最前面
  • 0.内容与结构
  • 1.深度学习简介
    • 1.1 问题引入
    • 1.2 思路:逆向思考
    • 1.3 跳过
    • 1.4 特点
    • 1.5 小结
  • 2.预备知识(MXNet版本,学错了。。。。)
    • 2.1 获取和运行本书的代码
    • 2.2 数据操作
      • 2.2.1 略过
      • 2.2.2 小结
    • 2.3 自动求梯度
      • 2.3.1 简单例子
      • 2.3.2 训练模式和预测模式
      • 2.3.3 对Python控制流求梯度
      • 2.3.4. 小结
    • 2.4. 查阅文档(跳过)

写在最前面

之前计划一天看一点,还是高估了自己,断断续续的看到啥时候去了,干脆花一天快速入门

学习资料(《动手学深度学习》文档):http://zh.gluon.ai/chapter_how-to-use/how-to-use.html

0.内容与结构

最基础的概念和技术:第1章至第3章
现代深度学习技术:第4章至第6章
根据兴趣选择阅读:第7章至第10章
在这里插入图片描述

1.深度学习简介

1.1 问题引入

问题:判断图片是否有猫

简化:
① 假设所有图像的高和宽都是同样的400像素大小,一个像素由红绿蓝三个值构成,那么一张图像就由近50万个数值表示。
② 哪些数值隐藏着我们需要的信息呢?是所有数值的平均数,还是四个角的数值,抑或是图像中的某一个特别的点?
③ 事实上,要想解读图像中的内容,需要寻找仅仅在结合成千上万的数值时才会出现的特征,如边缘、质地、形状、眼睛、鼻子等,最终才能判断图像中是否有猫。

1.2 思路:逆向思考

与其设计一个解决问题的程序,不如从最终的需求入手来寻找一个解决方案。

机器学习和深度学习应用共同的核心思想:“用数据编程”。

收集一些已知包含猫与不包含猫的真实图像
目标:转化成如何从这些图像入手,得到一个可以推断出图像中是否有猫的函数。
这个函数的形式通常通过我们的知识来针对特定问题选定。
例如,我们使用一个二次函数来判断图像中是否有猫,但是像二次函数系数值这样的函数参数的具体值则是通过数据来确定。

机器学习:一门讨论各式各样的适用于不同问题的函数形式,以及如何使用数据来有效地获取函数参数具体值的学科。
深度学习:机器学习中的一类函数,它们的形式通常为多层神经网络,复杂高维度数据的主要方法。

1.3 跳过

起源、发展、成功案例

1.4 特点

机器学习:研究如何使计算机系统利用经验改善性能。表征学习关注如何自动找出表示数据的合适方式,以便更好地将输入变换为正确的输出
深度学习:具有多级表示的表征学习方法。在每一级(从原始数据开始),深度学习通过简单的函数将该级的表示变换为更高级的表示。
可以看作是由许多简单函数复合而成的函数。当这些复合的函数足够多时,深度学习模型就可以表达非常复杂的变换。

深度学习可以逐级表示越来越抽象的概念或模式。
以图像为例,它的输入是一堆原始像素值。深度学习模型中,图像可以逐级表示为特定位置和角度的边缘、由边缘组合得出的花纹、由多种花纹进一步汇合得到的特定部位的模式等。
最终,模型能够较容易根据更高级的表示完成给定的任务,如识别图像中的物体。
值得一提的是,作为表征学习的一种,深度学习将自动找出每一级表示数据的合适方式。

因此,深度学习的一个外在特点是端到端的训练。也就是说,并不是将单独调试的部分拼凑起来组成一个系统,而是将整个系统组建好之后一起训练
自动优化的逐级过滤器。

从含参数统计模型转向完全无参数的模型。
当数据非常稀缺时,需要通过简化对现实的假设来得到实用的模型。
当数据充足时,能更好地拟合现实的无参数模型来替代这些含参数模型。可以得到更精确的模型,尽管需要牺牲一些可解释性

深度学习:对非最优解的包容、对非凸非线性优化的使用,以及勇于尝试没有被证明过的方法。

1.5 小结

机器学习研究如何使计算机系统利用经验改善性能。它是人工智能领域的分支,也是实现人工智能的一种手段。
作为机器学习的一类,表征学习关注如何自动找出表示数据的合适方式。
深度学习是具有多级表示的表征学习方法。它可以逐级表示越来越抽象的概念或模式。

深度学习使用场景:虽有许多展示如何解决问题的样例,但缺少自动解决问题的算法

2.预备知识(MXNet版本,学错了。。。。)

2.1 获取和运行本书的代码

http://zh.gluon.ai/chapter_prerequisite/install.html

2.2 数据操作

2.2.1 略过

基础的python,略过
http://zh.gluon.ai/chapter_prerequisite/ndarray.html

2.2.1. 创建NDArray

之前创建的向量和矩阵都是特殊的张量

2.2.2. 运算

2.2.3. 广播机制
当对两个形状不同的NDArray按元素运算时,可能会触发广播(broadcasting)机制:先适当复制元素使这两个NDArray形状相同后再按元素运算。

解析:由于A和B分别是3行1列和1行2列的矩阵,如果要计算A + B,那么A中第一列的3个元素被广播(复制)到了第二列,而B中第一行的2个元素被广播(复制)到了第二行和第三行。如此,就可以对2个3行2列的矩阵按元素相加。

A[[0.][1.][2.]]<NDArray 3x1 @cpu(0)>B[[0. 1.]]<NDArray 1x2 @cpu(0)>A + B
[[0. 1.][1. 2.][2. 3.]]
<NDArray 3x2 @cpu(0)>

2.2.4. 索引
2.2.5. 运算的内存开销
Python自带的id函数:如果两个实例的ID一致,那么它们所对应的内存地址相同;反之则不同。

2.2.6. NDArray和NumPy相互变换
可以通过array函数和asnumpy函数令数据在NDArray和NumPy格式之间相互变换。

import numpy as npP = np.ones((2, 3))
D = nd.array(P)
D
D.asnumpy()

2.2.2 小结

NDArray是MXNet中存储和变换数据的主要工具。
可以轻松地对NDArray创建、运算、指定索引,并与NumPy之间相互变换。

2.3 自动求梯度

在深度学习中,我们经常需要对函数求梯度(gradient)。本节将介绍如何使用MXNet提供的autograd模块来自动求梯度。

2.3.1 简单例子

对函数 y=2x⊤xy = 2\boldsymbol{x}^{\top}\boldsymbol{x}y=2xx 求关于列向量 x\boldsymbol{x}x 的梯度。我们先创建变量xxx,并赋初值。

In [2]:

x = nd.arange(4).reshape((4, 1))
x

Out[2]:

[[0.][1.][2.][3.]]
<NDArray 4x1 @cpu(0)>

为了求有关变量x的梯度,我们需要先调用attach_grad函数来申请存储梯度所需要的内存。

In [3]:

x.attach_grad()

下面定义有关变量x的函数。为了减少计算和内存开销,默认条件下MXNet不会记录用于求梯度的计算。我们需要调用record函数来要求MXNet记录与求梯度有关的计算。

In [4]:

with autograd.record():y = 2 * nd.dot(x.T, x)

由于x的形状为(4, 1),y是一个标量。接下来我们可以通过调用backward函数自动求梯度。需要注意的是,如果y不是一个标量,MXNet将默认先对y中元素求和得到新的变量,再求该变量有关x的梯度。

In [5]:

y.backward()

函数 y = 2x⊤x2\boldsymbol{x}^{\top}\boldsymbol{x}2xx 关于x\boldsymbol{x}x 的梯度应为4x4\boldsymbol{x}4x。现在我们来验证一下求出来的梯度是正确的。

In [6]:

assert (x.grad - 4 * x).norm().asscalar() == 0
x.grad

Out[6]:

[[ 0.][ 4.][ 8.][12.]]
<NDArray 4x1 @cpu(0)>

2.3.2 训练模式和预测模式

从上面可以看出,在调用record函数后,MXNet会记录并计算梯度。此外,默认情况下autograd还会将运行模式从预测模式转为训练模式。这可以通过调用is_training函数来查看。

In [7]:

print(autograd.is_training())
with autograd.record():print(autograd.is_training())
False
True

在有些情况下,同一个模型在训练模式和预测模式下的行为并不相同。我们会在后面的章节(如“丢弃法”一节)详细介绍这些区别。

2.3.3 对Python控制流求梯度

使用MXNet的一个便利之处是,即使函数的计算图包含了Python的控制流(如条件和循环控制),我们也有可能对变量求梯度。

考虑下面程序,其中包含Python的条件和循环控制。需要强调的是,这里循环(while循环)迭代的次数和条件判断(if语句)的执行都取决于输入a的值。

对输入的a不断的乘以2直到大于1000输出,其实就是一个类似线性函数。(评论大佬解读)

In [8]:

def f(a):b = a * 2while b.norm().asscalar() < 1000:b = b * 2if b.sum().asscalar() > 0:c = belse:c = 100 * breturn c

我们像之前一样使用record函数记录计算,并调用backward函数求梯度。

In [9]:

a = nd.random.normal(shape=1)
a.attach_grad()
with autograd.record():c = f(a)
c.backward()

我们来分析一下上面定义的f函数。事实上,给定任意输入a,其输出必然是 f(a) = x * a的形式,其中标量系数x的值取决于输入a。由于c = f(a)有关a的梯度为x,且值为c / a,我们可以像下面这样验证对本例中控制流求梯度的结果的正确性。

In [10]:

a.grad == c / a

Out[10]:

[1.]
<NDArray 1 @cpu(0)>

2.3.4. 小结

MXNet提供autograd模块来自动化求导过程。
MXNet的autograd模块可以对一般的命令式程序进行求导。
MXNet的运行模式包括训练模式和预测模式。我们可以通过autograd.is_training()来判断运行模式。

2.4. 查阅文档(跳过)

http://zh.gluon.ai/chapter_prerequisite/lookup-api.html

相关文章:

快速入门深度学习1(用时1h)

速通《动手学深度学习》1写在最前面0.内容与结构1.深度学习简介1.1 问题引入1.2 思路&#xff1a;逆向思考1.3 跳过1.4 特点1.5 小结2.预备知识&#xff08;MXNet版本&#xff0c;学错了。。。。&#xff09;2.1 获取和运行本书的代码2.2 数据操作2.2.1 略过2.2.2 小结2.3 自动…...

PaddleOCR关键信息抽取(KIE)的训练(SER训练和RE训练)错误汇总

1.SER训练报错: SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception 1.1.问题描述 在执行训练任务的时候报错 单卡训练 python3 tools/train.py -c train_data/my_data/ser_vi_layoutxlm_xfund_zh.yml错误信息如下&#xff1a; T…...

信息收集之搜索引擎

Google Hacking 也可以用百度&#xff0c;不过谷歌的搜索引擎更强大 site 功能&#xff1a;搜索指定域名的网页内容&#xff0c;可以用来搜索子域名、跟此域名相关的内容 示例&#xff1a; site:zhihu.com 搜索跟zhihu.com相关的网页“web安全” site:zhihu.com 搜索zhihu…...

Flutter(四)布局类组件

目录布局类组件简介布局原理与约束线性布局&#xff08;Row和Column&#xff09;弹性布局流式布局&#xff08;Wrap、Flow&#xff09;层叠布局&#xff08;Stack、Positioned&#xff09;对齐与相对定位&#xff08;Align&#xff09;Align和Stack对比Center组件LayoutBuilder…...

【黑马】Java基础从入门到起飞目录合集

视频链接&#xff1a; Java入门到起飞&#xff08;上部&#xff09;&#xff1a;BV17F411T7AoJava入门到起飞&#xff08;下部&#xff09;&#xff1a;BV1yW4y1Y7Ms 学习时间&#xff1a; 2023/02/01 —— 2023/03/09断断续续的学习&#xff0c;历时大概37天&#xff0c;完结撒…...

PMP考前冲刺3.10 | 2023新征程,一举拿证

题目1-2&#xff1a;1.在最近的一次耗时四周的迭代中&#xff0c;赫克托尔所在的敏捷团队刚完成了10 个用户故事点的开发、测试和发布&#xff0c;那么团队的速度是&#xff1f;A. 10B. 4C. 5D.402.产品负责人奥佩&#xff0c;倾向于在短周期内看到工作产品的新版本&#xff0c…...

JavaScript Math常用方法

math是JavaScript的一个内置对象&#xff0c;它提供了一些数学属性和方法&#xff0c;可以对数字进行计算&#xff08;用于Number类型&#xff09;。 math和其他全局对象不同&#xff0c;它不是一个构造器&#xff0c;math的所有方法和属性都是静态的&#xff0c;直接使用并传入…...

【C++】模板进阶

文章目录一、非类型模板参数1、非类型模板参数2、C11 中的 array 类二、模板的特化1、模板特化的概念2、函数模板特化3、类模板特化3.1 全特化3.2 偏特化三、模板的分离编译四、模板总结一、非类型模板参数 1、非类型模板参数 模板参数分为类型形参与非类型形参&#xff0c;类…...

三板斧解决leetcode的链表题

在《波奇学单链表》中我们提到单链表的两个特点单向性。头节点尾节点的特殊性导致分类讨论的情况。如何看单链表&#xff1f;让我们简化成下图cur表示当前节点&#xff0c;下图表示cur移动&#xff0c;圆圈表示值用哨兵卫节点(新的头节点)和把尾节点看成NULL来把头尾节点一般化…...

全生命周期的云原生安全框架

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/129423036 一、全生命周期的云原生安全框架 如图所示&#xff1a; 二、框架说明 在上图中&#xff0c;我们从两个维度描述各个安全机制&#xff0c;横轴是开发和运营阶段&#xff0c;细分为编码、测试…...

【本地网站上线】ubuntu搭建web站点,并内网穿透发布公网访问

【本地网站上线】ubuntu搭建web站点&#xff0c;并内网穿透发布公网访问前言1. 本地环境服务搭建2. 局域网测试访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问4. 配置固定二级子域名4.1 保留一个二级子域名4.2 配置二级子域名4.3 测试访问公网固定二级子…...

电脑怎么重装系统?教你轻松掌握这些方法

重新安装计算机系统有两种原因&#xff1a;一种是计算机系统可以正常使用&#xff0c;但是电脑比较卡&#xff0c;为了提高它的运行速度&#xff0c;所以想要通过重新安装系统来解决这个问题;另一种原因是计算机系统文件丢失&#xff0c;系统出现蓝屏&#xff0c;或者黑屏的情况…...

leetcode-每日一题-2379(简单,字符串)

久违的简单题......给你一个长度为 n 下标从 0 开始的字符串 blocks &#xff0c;blocks[i] 要么是 W 要么是 B &#xff0c;表示第 i 块的颜色。字符 W 和 B 分别表示白色和黑色。给你一个整数 k &#xff0c;表示想要 连续 黑色块的数目。每一次操作中&#xff0c;你可以选择…...

SLF4J日志框架在项目中使用

介绍 SLF4J全称“Simple Logging Facade for Java”&#xff0c;作为各种日志框架的简单门面。例如&#xff1a; java.util.logging、logback 、 reload4j等。只需要切换日志框架的jar包依赖就可以切换日志框架。 SLF4J支持的日志框架包含如下&#xff1a; log4j&#xff1a…...

Spark MLlib 模型训练

Spark MLlib 模型训练决策树随机森林GBDTSpark MLlib 开发框架下 : 监督学习 : 回归 (Regression) , 分类 (Classification) , 协同过滤 (Collaborative Filtering)非监督学习 : 聚类 (Clustering) 、频繁项集 (Frequency Patterns) 例子分类 : 算法分类 : 算法分类算法子分类…...

Python中变量的作用域精讲

文章目录前言一、局部变量二、全局变量前言 变量的作用域是指程序代码能够访问该变量的区域&#xff0c;如果超出该区域&#xff0c;再访问时就会出现错误。在程序中&#xff0c;一般会根据变量的 “有效范围” 将变量分为 “全局变量” 和 “局部变量”。 一、局部变量 局部变…...

数据仓库工程师的工作职责的相关介绍

1. BI 开发工程师的工作内容是什么&#xff1f; BI开发工程师&#xff08;Business Intelligence Developer&#xff09;是负责设计和开发企业级BI系统的专业人员。他们的主要工作是从多个数据源中提取、转换、加载和分析数据&#xff0c;以支持企业决策。以下是BI开发工程师的…...

ESP UART 介绍

1 UART 介绍 UART 是一种以字符为导向的通用数据链&#xff0c;可以实现设备间的通信。异步传输的意思是不需要在发送数据上添加时钟信息。这也要求发送端和接收端的速率、停止位、奇偶校验位等都要相同&#xff0c;通信才能成功。 1.1 UART 通信协议 一个典型的 UART 帧开始…...

第十三届蓝桥杯省赛Python大学B组复盘

目录 一、试题B&#xff1a;寻找整数 1、题目描述 2、我的想法 3、官方题解 4、另解 二、试题E&#xff1a;蜂巢 1、题目描述 2、我的想法 3、官方题解 三、试题F&#xff1a;消除游戏 1、题目描述 2、我的想法&#xff08;AC掉58.3%&#xff0c;剩下全超时&#x…...

linux入门---vim的配置

这里写目录标题预备知识如何配置vimvim一键配置预备知识 在配置vim之前大家首先得知道一件事就是vim的配置是一人一份的&#xff0c;每个用户配置的vim都是自己的vim&#xff0c;不会影响到其他人&#xff0c;比如说用户xbb配置的vim是不会影响到用户wj的&#xff0c;虽然不同…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...