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 ...
随机推荐
- 星链技术设计(starlink techriage design)
1.星链 定义: 星链,是美国太空探索技术公司的一个项目,太空探索技术公司计划在2019年至2024年间在太空搭建由约1.2万颗卫星组成的"星链"网络提供互联网服务,其中158 ...
- 抽取JDBC工具类:JDBCUtils
目的:简化书写 分析: 驱动注册,连接对象创建,其中包括输入驱动,数据库的地址,以及用户名和密码,每次编写代码都需要重复编写,如果每次使用的都是同一个账户的同一个数据库,代码的重复读很高,甚至 ...
- Python-闭包(Closure)
一.认识闭包 有时候需要在函数外部得到函数内部的局部变量,但是由于Python作用域的关系,这一点是无法实现的. def f(): n = 22 print(n) #NameError:name 'n ...
- SpringCloud基本认知
SpringCloud基本认知 本文学习自<重新定义SpringCloud> 微服务架构概述 应用架构的发展 应用是可独立运行的程序代码,提供的相对应完善的业务功能. 目前软件架构有三 ...
- 分布式锁 -- redis
原理 redis设置一个key和value,如果存在则获取锁失败,不存在则获取锁成功处理业务,业务处理完成后删除这条数据,可以带个失效时间. 代码 public void handleInvoice( ...
- geoserver的自动化部署
年后接到一个任务,需求是这样的: 搭建一个geoserver服务器,将公司内部的mbtile数据(EPSG:3857)发布出去 服务的输出格式为MBTiles with vector tiles的矢量 ...
- Winfrom ComboBox中的性能探索
在为Control维护元素列表的过程中,会不可避免的造成性能损耗,我们接下来要探究的就是哪种方式才是我们的最优解. 方案比较 以ComboBox为例,常见的方式一共有两种:Add.AddRange. ...
- 搭建Kubord管理k8s/EKS以及Harbor私有仓库教程
eks首先要去aws后台进行创建,这里不再讲解详细的过程,下面讲解如果通过命令行以及kuboard调度esk服务. 安装docker以及docker-compose yum install docke ...
- C#判断窗体是否打开,并获取聚焦、未打开则新建一个子窗体
在桌面程序开发会遇到的情况,托盘功能或者是小功能弹窗问题: 现有一个主窗体有子窗体 子窗体每个都可以新建其他窗体问题:新建子窗体时怎么判断子窗体是否打开?若子窗体打开则置顶获取焦点.若未打开则新建一个 ...
- linux 服务器下发布前端
前提: 1.本地安装xshell和xftp 2.第一次需重置实例密码 3.22端口必须开启(默认开启) Linux安装nginx在linux下安装nginx,首先需要安装 gcc-c++编译器.然后安 ...