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 ...
随机推荐
- AcWing 791. 高精度加法C++数组实现
高精度加法 a, b均为正整数 #include <iostream> using namespace std; const int N = 100010; int A[N], B[N], ...
- C++快速求解最大公因数 | gcd库函数
1.介绍 gcd全称 :greatest common divisor 使用 __gcd( int x1, int x2 ) 函数可以高效.迅速得到x1, x2两个数的最大公因数.省去手写底层代码,专 ...
- k8s 基础
创建pod(kubectl create -f {podname} .yaml pod "{podname} " created -n {namespace}) cat name ...
- JS基础笔记汇总
JS基础笔记最全的汇总 javascript介绍以及起源目录1.变量和常量的知识2.基本数据类型3.运算符4.基本数据类型间的转换5.流程控制语句 一.javascript介绍以及起源 js一种直译型 ...
- BIP 两个请求成功后,才能做某一件事
//保存前校验 let SetXStatus = 0; viewModel.on("beforeSave", function (args) { let _this = this; ...
- D_GLIBCXX_USE_CXX11_ABI
gcc ABI兼容 设置=0,表示使用C++11之前的ABI 反之,使用C++11的ABI
- 使用nvm安装不同版本的NodeJS
下载及安装 下载地址:https://github.com/coreybutler/nvm-windows/releases 配置nodejs的镜像地址 nvm node_mirror https:/ ...
- 学术主页——朱青橙(Qingcheng Zhu)
个人简介 来自北京邮电大学 教育经历 毕业于苏州大学 奖励荣誉 学术论文 发明专利 国际标准 科研项目
- 做文件上传功能时,dubbo对MultipartFile文件传输时,一个bug:Fail to decode request due to: RpcInvocation
三月 22, 2019 2:37:27 下午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() fo ...
- windows下创建con文件夹
有时候,我们会碰到必须创建一个名为CON的文件夹,而这个名称在Windows下属于保留字(DOS时代的遗留产物). 方法如下: 1.打开命令行窗口(开始-->运行-->cmd) 2.输入完 ...