b站——沐神——深度学习
预备知识
数据操作
MXNet
nd:(array函数:得到NDArray)
[[1. 1. 1.]
[1. 1. 1.]]
<NDArray 2x3 @cpu(0)>
np:(asnumpy函数:得到NumPy)
array([[1., 1., 1.],
[1., 1., 1.]], dtype=float32)
NDArray类:存储和变换数据(通过array
函数和asnumpy
函数令数据在NDArray
和NumPy格式之间相互变换)(nd和np)
- 常将NDArray实例直接称作NDArray
- 和NumPy的多维数组非常类似,但NDArray提供GPU计算和自动求梯度等更多功能,这些使NDArray更加适合深度学习
- x=nd.arange(12)函数:创建一个行向量,从0-11
- x.shape : shape属性来获取NDArray实例的形状
- a = nd.ones(shape=1000):1000维的向量a
- x.size : size属性得到NDArray实例中元素的总数
- X = x.reshape((3, 4)):改变形状,3行4列;可写成x.reshape((-1, 4))或x.reshape((3, -1))
- nd.zeros((2, 3, 4)):创建张量,各元素为0,形状为(2, 3, 4)。向量和矩阵都是特殊的张量
nd.ones((3, 4)):各元素为1.
Y = nd.array([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]]):通过Python的列表(list)指定需要创建的
NDArray
中每个元素的值。nd.random.normal(0, 1, shape=(3, 4)):随机生成
NDArray
中每个元素的值,每个元素都随机采样于均值为0、标准差为1的正态分布。(均值为0、标准差为0.01的正态随机数)nd.dot(X, Y.T):矩阵乘法。
nd.concat(X, Y, dim=0), nd.concat(X, Y, dim=1):将多个
NDArray
连结(concatenate)。分别在行上(维度0,即形状中的最左边元素x/y竖着拼接)和列上(维度1,即形状中左起第二个元素x+y横着拼接)连结两个矩阵。X == Y:使用条件判断式可以得到元素为0或1的新的
NDArray。数值相等的位置的值为1,不等则为0;
X.sum():所有元素求和得到只有一个元素的
NDArray。如[66.]
X.norm().asscalar():(通过
asscalar
函数将结果变换为Python中的标量)这里求X的 L2范数(平方和,再开根号) 结果同上例一样是单元素NDArray
,但最后结果变换成了Python中的标量,如22.49442.- 也可以把
Y.exp()
、X.sum()
、X.norm()
等分别改写为nd.exp(Y)
、nd.sum(X)
、nd.norm(X)
等
广播机制:两个形状不同的NDArray
按元素运算时,先适当复制元素使这两个NDArray
形状相同后再按元素运算。
索引 (从0开始, 左闭右开)
X[1:3] : 截取了矩阵
X
中行索引为1和2的两行.X[1, 2] = 9 : 索引并赋值替换一个元素。
X[1:2, :] = 12:索引一部分元素并全部赋值。第二行数值全部替换成12.
自动求梯度
- x = nd.arange(4).reshape((4, 1)):先创建变量
x
,并赋初值。 - x.attach_grad():先调用
attach_grad
函数来申请存储梯度所需要的内存。 with autograd.record() : y = 2 * nd.dot(x.T, x) :调用record函数来要求MXNet记录与求梯度有关的计算. (默认条件下MXNet不会记录用于求梯度的计算)
y.backward():自动求梯度(如果y不是一个标量,MXNet将默认先对y中元素求和得到新的变量,再求该变量有关x的梯度。)
同一个模型在训练模式和预测模式下的行为并不相同,可以通过调用is_training函数来查看
- 在调用record函数后,MXNet会记录并计算梯度。此外,默认情况下autograd还会将运行模式从预测模式转为训练模式。
print(autograd.is_training()) ——结果False
with autograd.record(): print(autograd.is_training())——结果True
查阅文档
dir(nd.random) : 打印模块nd.random中所有成员或属性,查找模块中的类和函数
- help(nd.ones_like):查找函数(ones_like)和类; (在Jupyter记事本里,我们可以使用
?
来将文档显示在另外一个窗口中。例如,使用nd.random.uniform?等效于
)help(nd.random.uniform)
深度学习
1.线性回归-输出为连续值-房价预测,股票预测
线性回归基本要素:建立模型,模型训练(数据(样本-房屋,标签-真实售价,特征-用来预测标签的因素),损失函数,优化算法()),模型预测
2.softmax回归-输出为离散值-图像分类
softmax回归 与线性回归的一个主要不同在于,softmax回归的输出值个数等于标签里的类别数。
softmax回归的输出层也是一个全连接层
怎么得到离散的预测输出值:一个简单的办法是将输出值Oi当作预测类别是i的置信度,并将值最大的输出所对应的类作为预测输出,即输出argmaxOi.
但是,直接使用输出层的输出有两个问题:1.输出层的输出值的范围不确定,我们难以直观上判断这些值的意义。
2.由于真实标签是离散值,这些离散值与不确定范围的输出值之间的误差难以衡量
softmax运算符(softmax operator)解决了以上两个问题——将输出值变换成值为正且和为1的概率分布。(假如三个分类目标,因为概率和为1,如果其中一个为0.8,就能确定图像是这类的概率为80%,其余两个概率就不用管),同时softmax运算不改变预测类别输出,即argmaxOi=argmaxYi.
真实标签one-hot表示:softmax运算将输出变换成一个合法的类别预测分布,真实标签也可以用类别分布表达,对于样本i,构造向量Yi,第yi个元素为1,其余为0,(向量Yi中只有一个元素为1,其余全为0,即one-hot编码)
softmax预测输出值和真实标签都用概率值表示,方便计算误差。
想要预测结果正确,其实也能用均方差误差,但均方差过于严格,我们并不需要预测概率完全等于标签概率,只需要知道其中一个的概率值比其余的大就行了。
需要使用更适合衡量两个概率分布差异的测量函数/误差函数:交叉熵(cross entropy)——关心对正确类别的预测概率,因为只要其值足够大,就可以确保分类结果正确。
b站——沐神——深度学习的更多相关文章
- B站动手学深度学习第十八课:seq2seq(编码器和解码器)和注意力机制
from mxnet import nd h_forward = nd.array([1,2]) h_backward = nd.array([3,4]) h_bi = nd.concat(h_for ...
- 我在 B 站学习深度学习(生动形象,跃然纸上)
我在 B 站学习深度学习(生动形象,跃然纸上) 视频地址:https://www.bilibili.com/video/av16577449/ tensorflow123 http://tensorf ...
- 吴恩达《深度学习》-课后测验-第一门课 (Neural Networks and Deep Learning)-Week 3 - Shallow Neural Networks(第三周测验 - 浅层神 经网络)
Week 3 Quiz - Shallow Neural Networks(第三周测验 - 浅层神经网络) \1. Which of the following are true? (Check al ...
- 【转载】如何自学深度学习技术,大神Yann LeCun亲授建议
编者按:Quora 上有网友提问:自学机器学习技术,你有哪些建议?(What are your recommendations for self-studying machine learning), ...
- 谷歌大神Jeff Dean:大规模深度学习最新进展 zz
http://www.tuicool.com/articles/MBBbeeQ 在AlphaGo与李世石比赛期间,谷歌天才工程师Jeff Dean在Google Campus汉城校区做了一次关于智能计 ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】
转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...
- 机器学习&深度学习经典资料汇总,data.gov.uk大量公开数据
<Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.D ...
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)(1)
原文:http://developer.51cto.com/art/201501/464174.htm 编者按:本文收集了百来篇关于机器学习和深度学习的资料,含各种文档,视频,源码等.而且原文也会不定 ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料汇总 (上)
转载:http://dataunion.org/8463.html?utm_source=tuicool&utm_medium=referral <Brief History of Ma ...
- 近200篇机器学习&深度学习资料分享【转载】
编者按:本文收集了百来篇关于机器学习和深度学习的资料,含各种文档,视频,源码等.而且原文也会不定期的更新,望看到文章的朋友能够学到更多. <Brief History of Machine Le ...
随机推荐
- CentOS7 设置防火墙、开放指定端口操作
1, 查看防火墙状态: firewall-cmd --state systemctl status firewalld.service 2, 开启防火墙: systemctl start firewa ...
- git 命令 使用记录
这是ider 在pull 代码是报的异常大概意思是本机有未处理的合并可是点击view files都之前删除的一些文件 这种问题可以使用一下命令 git fetch --all && g ...
- UI工具
sketch figma Adobe Photoshop Adobe Illustrator adobe xd
- C 标准 C89/C90/C99/C11/C17
C89/C90 PDF:https://www.yodaiken.com/wp-content/uploads/2021/05/ansi-iso-9899-1990-1.pdf C99 PDF:htt ...
- JAVA学习笔记-09
多线程: 进程:就是正在执行中的程序,每一个进程执行都有一个执行的顺序,该顺序是一个执行路径.或者叫一个控制单元. 线程:就是进程中的一个独立的控制单元,线程在控制着进程的执行 一个进程中至少有一个线 ...
- mysql常用语句操作
概述: 1.通过表结构介绍.来操作mysql常用的语法&语句: 2.现在学习下几个基本的sql语句,万变不离其宗,把基础弄扎实了其它的就很容易了 一.表结构&建表: 1.学生基础信息表 ...
- 【笔记】GTK的bind函数的参数
自打用了cinnamon之后 无比想念gnome的扩展 虽然都是基于gjs的东西 但是gnome的插件在cinnamon上没有就很痛苦 这次修改了个插件 recents 记录历史打开的文件 想添加个功 ...
- C# const, readonly, static readonly
转: Const 定义的是静态常在对象初始化的时候赋值.以后不能改变它的值.属于编译时常量.不能用new初始化. Readonly 是只读变量.属于运行时变量.可以在类constructor里改变它的 ...
- C语言学习记录(一)
C语言学习记录(一) 一.知识要点(程序设计概述) 1.程序与程序设计语言 概念:程序就是给计算机下一系列指令,使其完成任务.而编写这些指令就是程序设计. 程序设计语言 第一代程序设计语言(1GL): ...
- python 第三方包大全
https://www.lfd.uci.edu/~gohlke/pythonlibs/ http://mirrors.aliyun.com/pypi/simple