一.导言

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

    ---恢复内容开始--- 1.  jquery的属性操作  $().attr(属性名)    取值 $().attr(属性名,属性值)      赋值 <!DOCTYPE html> &l ...

  2. ***报错Class 'Redis' not found in(原创)

    报错:Class 'Redis' not found in 这个报错,表明phpredis 扩展没有安装好,而不是redis没有安装 有没有安装成功这个扩展,可以通过phpinfo来查看. 解决问题的 ...

  3. Visual studio 2017 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包

    装完win10更新 发现vs杯具了… 提示 未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包 可以尝试在vs命令行 ...

  4. System.TimeoutException: The operation requested on PersistentChannel timed out

    这个异常是在使用EasyNetQ时,遇到的问题,找了两个小时. 详细错误 Error:System.TimeoutException: The operation requested on Persi ...

  5. Spring MVC 以.html为后缀名访问获取数据,报406 Not Acceptable错误

    转载,感谢这位博主,有自己的添加. 如题,最近以spring mvc作为后台框架,前端异步获取数据时(.html为后缀名的访问方式),报406 Not Acceptable错误.当初都不知道啥原因,前 ...

  6. 实验二《Java面向对象程序设计》实验报告

    一.实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 二.实验步骤 (一)单元测试 1.三种代码:伪代码.测 ...

  7. Codeforces 1144F Graph Without Long Directed Paths (DFS染色+构造)

    <题目链接> 题目大意:给定一个无向图,该无向图不含自环,且无重边.现在要你将这个无向图定向,使得不存在任何一条路径长度大于等于2.然后根输入边的顺序,输出构造的有向图.如果构造的边与输入 ...

  8. 2013年省赛I题 Thrall’s Dream

    2013年省赛I题判断单向联通,用bfs剪枝:从小到大跑,如果遇到之前跑过的点(也就是编号小于当前点的点),就o(n)传递关系. bfs #include<iostream> #inclu ...

  9. centos7部署openstack-ocata

    1.前言 本文旨在记录本人的一个实验过程,因为其中有一些坑,方便以后回顾查询. 其中限于篇幅(大部分是配置部分)有些内容省略掉了,官网都有,各位如果是安装部署的话可以参考官网,不建议使用本文. 以下是 ...

  10. Oracle 与 Mysql NULL值,空字符串''的区别

    Oracle(null等同于空字符'') 1.oracle插入空字符串默认替换成null 2.oracle查询(null和被替换的空字符)时使用 is null/is not null 3.使用聚合函 ...