一.导言

本教程适合对人工智能有一定的了解的同学,特别是对实际使⽤深度学习感兴趣的⼤学⽣、⼯程师和研究⼈员。但本教程并不要求你有任何深度学习或者机器学习的背景知识,我们将从头开始解释每⼀个概念。虽然深度学习技术与应⽤的阐述涉及了数学和编程,但你只需了解基础的数学和编程,例如基础的线性代数、微分和概率,以及基础的 Python 编程本教程将全⾯介绍深度学习从模型构造到模型训练的⽅⽅⾯⾯,以及它们在计算机视觉和⾃然语⾔处理中的应⽤。我们不仅将阐述算法原理,还将基于 Apache MXNet 来演⽰它们的实现和运⾏。如果你之前没有接触过 Python,可以参考中⽂教程http://www.runoob.com/python/python-tutorial.html 或英⽂教程 http://learnpython.org/ 。当然,如果你只对本教程中的数学部分感兴趣,你可以忽略掉编程部分,反之亦然。

二.安装

由于笔者本人用的是windows操作系统,因此只需要在windows命令行界面的模式下输入:

pip install mxnet

于是很快就可以安装完成了,如果不能安装的话,我们可以采用游侠加速器,在电脑上安装这个加速器,注册登录之后就可以使用了。这个加速器是可以免费使用一天的,之后的话基本上是一个月30元,对于学习计算机的朋友来说也并不是很贵,可以左转到百度搜索下载游侠加速器即可。

 三.1:数据操作

在深度学习中,我们通常会频繁地对数据进⾏操作。作为动⼿学深度学习的基础,本节将介绍如何对内存中的数据进⾏操作。在MXNet中,NDArray是存储和变换数据的主要⼯具,数据操作对于我们之后的学习相当重要。如果你之前⽤过NumPy,你会发现NDAr-ray 和 NumPy 的多维数组⾮常类似。然而,NDArray 提供 GPU 计算和⾃动求梯度等更多功能,这些使得 NDArray 更加适合深度学习。

首先我们从MXNet当中导入ndarray模块,这里的nd是ndarray的缩写形式。

我们输入:

from mxnet import nd

然后我们使用arange函数创建一个行向量:

 x = nd.arange()

输出结果是:

[ . . . . . . . . . . . .]

<NDArray 12 @cpu(0)>这时返回了⼀个 NDArray 实例,其中包含了从 0 开始的 12 个连续整数。从打印 x 时显⽰的属性<NDArray 12 @cpu(0)> 可以看出,它是⻓度为 12 的⼀维数组,且被创建在 CPU 主内存上。其中“@cpu(0)”⾥的 0 没有特别的意义,并不代表特定的CPU核心。我们接下来通过shape函数来获取这个对象的形状:

 x.shape 

输出:

(,)

我们同时可以利用size属性来得到这个对象实例当中总共的元素个数:

 x.size

输出:

12

下⾯使⽤ reshape 函数把⾏向量 x 的形状改为(3,4),也就是⼀个 3 ⾏ 4 列的矩阵,并记作X,除了形状不变之外,x当中的元素保持不变。

 X = x.reshape((, ))

输出:

[[ . . . .]
[ . . . .]
[ . . . .]]
<NDArray 3x4 @cpu()>

接下来,我们来输出一个张量(也就是三维的矩阵),并且让矩阵当中的每一个元素均为零:

 nd.zeros((, , ))

输出结果:

[[[. . . .]
[. . . .]
[. . . .]]
[[. . . .]
[. . . .]
[. . . .]]]
<NDArray 2x3x4 @cpu()>

同时我们还可以创建各元素均为1的张量,输入:

 nd.ones((, ))

输出:

[[. . . .]
[. . . .]
[. . . .]]
<NDArray 3x4 @cpu()>

我们也可以自定义我们要创建的NDArray当中的每一个元素的值:

 Y = nd.array([[, , , ], [, , , ], [, , , ]])

输出:

[[. . . .]
[. . . .]
[. . . .]]
<NDArray 3x4 @cpu()>

有些情况下,我们需要随机⽣成 NDArray 中每个元素的值。下⾯我们创建⼀个形状为(3,4)的NDArray。它的每个元素都随机采样于均值为 0 标准差为 1 的正态分布。

输入:

nd.random.normal(, , shape=(, ))

输出:

[[ 2.2122064 0.7740038 1.0434405 1.1839255 ]
[ 1.8917114 -1.2347414 -1.771029 -0.45138445]
[ 0.57938355 -1.856082 -1.9768796 -0.20801921]]
<NDArray 3x4 @cpu()>

三.2:运算

NDArray ⽀持⼤量的运算符(operator)。例如,我们可以对之前创建的两个形状为(3, 4)的NDArray 做按元素加法。所得结果形状不变。

比如我们可以做这些矩阵运算:
1. X + Y

2. X * Y

3. X / Y

4. Y.exp()(矩阵的每个元素做指数运算)

输出:

[[ 7.389056 2.7182817 54.59815 20.085537 ]
[ 2.7182817 7.389056 20.085537 54.59815 ]
[54.59815 20.085537 7.389056 2.7182817]]
<NDArray 3x4 @cpu()>

除了按元素计算外,我们还可以使⽤ dot 函数做矩阵运算。下⾯将 X 与 Y 的转置做矩阵乘法。由于 X 是 3 ⾏ 4 列的矩阵,Y 转置为 4 ⾏ 3 列的矩阵,两个矩阵相乘得到 3 ⾏ 3 列的矩阵。

 nd.dot(X, Y.T)

输出:

[[ . . .]
[ . . .]
[ . . .]]
<NDArray 3x3 @cpu()>

这就是我们今天的数据操作的教程了,希望大家能够亲自上手试一试,才会有好的效果。

 

最新文章

  1. POJ 2823 Sliding Window 线段树区间求和问题
  2. 传感器介绍之DHT11
  3. epoll的内部实现 &amp; 百万级别句柄监听 &amp; lt和et模式非常好的解释
  4. 浅析Java的HashCode,以及equals
  5. BZOJ 2286 消耗战
  6. PAT-乙级-1023. 组个最小数 (20)
  7. Inter系列处理器名称浅析
  8. 系统变量写在.bash_profile和.bashrc的区别
  9. iOS程序生命周期 AppDelegate
  10. 增加AP INVOICE 行&amp;分配行
  11. The openssl extension is required for SSL/TLS protection but is not available
  12. 设计模式のStrategyPattern(策略模式)----行为模式
  13. sencha touch/Ext Js 6 + 自定义扩展的用法
  14. [Spring] Annotation注释
  15. 20165228 2017-2018-2 《Java程序设计》第8周学习总结
  16. asp.net core跨平台开发从入门到实战文摘
  17. 迷你MVVM框架 avalonjs 1.3.6发布
  18. Oracle分页(limit方式的运用)
  19. ie 8及以下 前端cors ajax跨域须知
  20. 你真的认为iphone只是一部手机么

热门文章

  1. spring注解开发AnnotationConfigApplicationContext的使用
  2. JSP页面错误处理 JSP页面代码正确却标红的解决办法
  3. Org mode无法生成LaTeX公式预览图片
  4. Redis数据类型SortedSET
  5. typora画图
  6. Aspnet Core 对 Resetful API版本的支持
  7. Django---form表单提交数据到数据库(普通方法+Django的form类)
  8. 003 css总结
  9. TextBox使用技巧--转载
  10. notes for lxf(三)