预备知识

数据操作

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站——沐神——深度学习的更多相关文章

  1. B站动手学深度学习第十八课:seq2seq(编码器和解码器)和注意力机制

    from mxnet import nd h_forward = nd.array([1,2]) h_backward = nd.array([3,4]) h_bi = nd.concat(h_for ...

  2. 我在 B 站学习深度学习(生动形象,跃然纸上)

    我在 B 站学习深度学习(生动形象,跃然纸上) 视频地址:https://www.bilibili.com/video/av16577449/ tensorflow123 http://tensorf ...

  3. 吴恩达《深度学习》-课后测验-第一门课 (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 ...

  4. 【转载】如何自学深度学习技术,大神Yann LeCun亲授建议

    编者按:Quora 上有网友提问:自学机器学习技术,你有哪些建议?(What are your recommendations for self-studying machine learning), ...

  5. 谷歌大神Jeff Dean:大规模深度学习最新进展 zz

    http://www.tuicool.com/articles/MBBbeeQ 在AlphaGo与李世石比赛期间,谷歌天才工程师Jeff Dean在Google Campus汉城校区做了一次关于智能计 ...

  6. 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】

    转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...

  7. 机器学习&深度学习经典资料汇总,data.gov.uk大量公开数据

    <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboost到随机森林.D ...

  8. 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)(1)

    原文:http://developer.51cto.com/art/201501/464174.htm 编者按:本文收集了百来篇关于机器学习和深度学习的资料,含各种文档,视频,源码等.而且原文也会不定 ...

  9. 机器学习(Machine Learning)&深度学习(Deep Learning)资料汇总 (上)

    转载:http://dataunion.org/8463.html?utm_source=tuicool&utm_medium=referral <Brief History of Ma ...

  10. 近200篇机器学习&深度学习资料分享【转载】

    编者按:本文收集了百来篇关于机器学习和深度学习的资料,含各种文档,视频,源码等.而且原文也会不定期的更新,望看到文章的朋友能够学到更多. <Brief History of Machine Le ...

随机推荐

  1. 003. html篇之《表单》

    html篇之<表单> 一.结构 <form action="url" method="post" name=""> ...

  2. 剑指 Offer II 回溯法

    086. 分割回文子字符串 用substr枚举 因为是连续的 不是放与不放的问题 class Solution { public: vector<vector<string>> ...

  3. Mac连接交换机

    接上免驱动的绿联,可以看到有一个usb串口设备: ls /dev/tty.* /dev/tty.Bluetooth-Incoming-Port /dev/tty.usbserial-AB0LU5PY ...

  4. [Oracle19C 数据库管理] 配置数据库审计

    以下内容未经整理 占位 强制审计:无法关闭此审计,比如记录数据库的开启和关闭. 标准审计: 基于值得审计:创建触发器,基于值进行记录.Trigger占用资源多 细粒度审计:加一些where条件,针对触 ...

  5. 《Python深度学习》《卷积神经网络的可视化》精读

    对于大多数深度学习模型,模型学到的表示都难以用人类可以理解的方式提取和呈现.但对于卷积神经网络来说,我们可以很容易第提取模型学习到的表示形式,并以此加深对卷积神经网络模型运作原理的理解. 这篇文章的内 ...

  6. GraalVM, Native Image, Java on Truffle, LLVM runtime, WebAssembly, JavaScript and Node.js关系是什么

    GraalVM, Java on Truffle, LLVM runtime, WebAssembly, JavaScript and Node.js关系是什么 GraalVM是一个JDK发行版,支持 ...

  7. 如何在 Visual Studio 中自定义 Docker 容器 和 使用 Docker Compose 为 Visual Studio 创建多容器应用

    https://learn.microsoft.com/zh-cn/visualstudio/containers/container-build?WT.mc_id=visualstudio_cont ...

  8. Grafana + Prometheus 监控 Zookeeper

    废话不多说,前几篇已经相应的介绍Grafana 跟 Prometheus,如有不清楚,请参考: https://www.cnblogs.com/zgz21/p/12054518.html https: ...

  9. axios与ajax的优缺点

    axios和ajax的区别是什么?        1.axios是一个基于Promise的HTTP库,而ajax是对原生XHR的封装:         2.ajax技术实现了局部数据的刷新,而axio ...

  10. tomcat8 无法解析 请求url 中 包含 [: 或者 :] 等特殊符号

    使用如下URL: http://127.0.0.1:8080/xx/[:xOGxeSSk5ENaYh89ziEFJA==:].do 如果使用tomcat8 无法正常访问,浏览器network 报错 4 ...