一.导言

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

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

 

从零开始学深度学习mxnet教程:安装以及基本操作的更多相关文章

  1. python之感知器-从零开始学深度学习

    感知器-从零开始学深度学习 未来将是人工智能和大数据的时代,是各行各业使用人工智能在云上处理大数据的时代,深度学习将是新时代的一大利器,在此我将从零开始记录深度学习的学习历程. 我希望在学习过程中做到 ...

  2. 【动手学深度学习】Jupyter notebook中 import mxnet出错

    问题描述 打开d2l-zh目录,使用jupyter notebook打开文件运行,import mxnet 出现无法导入mxnet模块的问题, 但是命令行运行是可以导入mxnet模块的. 原因: 激活 ...

  3. 小白学习之pytorch框架(2)-动手学深度学习(begin-random.shuffle()、torch.index_select()、nn.Module、nn.Sequential())

    在这向大家推荐一本书-花书-动手学深度学习pytorch版,原书用的深度学习框架是MXNet,这个框架经过Gluon重新再封装,使用风格非常接近pytorch,但是由于pytorch越来越火,个人又比 ...

  4. 深度学习之TensorFlow安装与初体验

    深度学习之TensorFlow安装与初体验 学习前 搞懂一些关系和概念 首先,搞清楚一个关系:深度学习的前身是人工神经网络,深度学习只是人工智能的一种,深层次的神经网络结构就是深度学习的模型,浅层次的 ...

  5. Deep Learning 19_深度学习UFLDL教程:Convolutional Neural Network_Exercise(斯坦福大学深度学习教程)

    理论知识:Optimization: Stochastic Gradient Descent和Convolutional Neural Network CNN卷积神经网络推导和实现.Deep lear ...

  6. Deep Learning 13_深度学习UFLDL教程:Independent Component Analysis_Exercise(斯坦福大学深度学习教程)

    前言 理论知识:UFLDL教程.Deep learning:三十三(ICA模型).Deep learning:三十九(ICA模型练习) 实验环境:win7, matlab2015b,16G内存,2T机 ...

  7. Deep Learning 12_深度学习UFLDL教程:Sparse Coding_exercise(斯坦福大学深度学习教程)

    前言 理论知识:UFLDL教程.Deep learning:二十六(Sparse coding简单理解).Deep learning:二十七(Sparse coding中关于矩阵的范数求导).Deep ...

  8. Deep Learning 11_深度学习UFLDL教程:数据预处理(斯坦福大学深度学习教程)

    理论知识:UFLDL数据预处理和http://www.cnblogs.com/tornadomeet/archive/2013/04/20/3033149.html 数据预处理是深度学习中非常重要的一 ...

  9. Deep Learning 10_深度学习UFLDL教程:Convolution and Pooling_exercise(斯坦福大学深度学习教程)

    前言 理论知识:UFLDL教程和http://www.cnblogs.com/tornadomeet/archive/2013/04/09/3009830.html 实验环境:win7, matlab ...

随机推荐

  1. vue组件路由守卫钩子函数(beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave)

    用法:与mounted,created等同级并列. export default { data() { return { } }, methods: { go() { this.$router.pus ...

  2. Windows安装redis并将redis设置成服务

    Redis 作为一种缓存工具,主要用于解决高并发的问题,在分布式系统中有着极其广泛的应用,Redis 本身是应用于 Linux/Unix 平台的(部署在服务器上边),官方并没有提供 Windows 平 ...

  3. SSL 3.0曝出Poodle漏洞的解决方案

    tomcat 各版本对ssl解决方案的配置:tomcat6: <Connector port="443" protocol="org.apache.coyote.h ...

  4. python全栈开发day115、116-websocket、websocket原理、websocket加解密、简单问答机器人实现

    1.websocket 1.websocket 与轮询 轮询: 不断向服务器发起询问,服务器还不断的回复 浪费带宽,浪费前后端资源 保证数据的实时性 长轮询: 1.客户端向服务器发起消息,服务端轮询, ...

  5. Selenium Webdriver点击事件失效问题

    最近在用selenium webdriver时,遇到一个棘手的问题,点击事件有时候会失效,具体原因我也不知道是什么. 但是有两个解决办法,第一,在点击该标签前,先点击它的父标签,也就是点击两次. dr ...

  6. JDK解压版制作

    今天上  甲骨文 的官网,想下载一个 解压版的 jdk 1.8 结果发现: 没有解压版,只有exe版本.于是就搜索制作方法. 具体就是,双击exe版本,在最后关头要安装的时候, 重点来了! 跟他皮一下 ...

  7. 绕最新版安全狗-附上sqlmap的tamper

    在t00ls 里面我发的,放博客分享 记录一下 小菜写文章,太菜 希望大佬放过我!  主要分享一下,绕狗的思路环境:windows7 + phpstudy + safedog v4.0  + Mysq ...

  8. H5分享功能

    web端分享功能 https://www.cnblogs.com/sdcs/p/8328367.html H5分享功能 公司里面做web开发经常会做H5页面,今天整理分享一下. 微信公众号平台 步骤一 ...

  9. C#代码总结02---使用泛型来获取Asp前台页面全部控件,并进行属性修改

    该方法:主要用于对前台页面的不同类型(TextBox.DropDownList.等)或全部控件进行批量操作,用于批量修改其属性(如,Text.Enable). private void GetCont ...

  10. Akka.net 性能测试兼使用小技巧

    最近想研究一下分布式开发,先拿了akka.net 跑一下性能 参考自己写个网络实现,一般在本机通讯,300M每秒的传输率,作为参考 嗯,先说结果,用Akka.net直接发bytearray,最后也只有 ...