东莞市盛裕绒艺玩具有限公司

东莞市盛裕绒艺玩具有限公司

利记sbobet注册

18880533767
联系方式
全国服务热线: 18880533767

咨询热线:15337652681
联系人:卢修文
地址:内蒙古自治省包头市九原区白音席勒办事处

深度学习框架mxnet教程(一):安装以及基本操作

来源:利记sbobet注册   发布时间:2019-10-29   点击量:300

一.导言

本教程适合对人工智能有一定的了解的同学,特别是对实际使⽤深度学习感兴趣的⼤学⽣、⼯程师和研究⼈员。但本教程并不要求你有任何深度学习或者机器学习的背景知识,我们将从头开始解释每⼀个概念。虽然深度学习技术与应⽤的阐述涉及了数学和编程,但你只需了解基础的数学和编程,例如基础的线性代数、微分和概率,以及基础的 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(12)

输出结果是:

[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.]

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

x.shape

输出:

12,)

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

x.size

输出:

12

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

X = x.reshape((3, 4))

输出:

[[ 0. 1. 2. 3.][ 4. 5. 6. 7.][ 8. 9. 10. 11.]]<NDArray 3x4 @cpu(0)>

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

nd.zeros((2, 3, 4))

输出结果:

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

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

nd.ones((3, 4))

输出:

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

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

Y = nd.array([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])

输出:

[[2. 1. 4. 3.][1. 2. 3. 4.][4. 3. 2. 1.]]<NDArray 3x4 @cpu(0)>

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

输入:

nd.random.normal(0, 1, shape=(3, 4))

输出:

[[ 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(0)>

三.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(0)>

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

nd.dot(X, Y.T)

输出:

[[ 18. 20. 10.][ 58. 60. 50.][ 98. 100. 90.]]<NDArray 3x3 @cpu(0)>

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

 

 

 

相关产品

COPYRIGHTS©2017 利记sbobet注册 ALL RIGHTS RESERVED 备案号:300