从零开始学深度学习mxnet教程:安装以及基本操作
一.导言
本教程适合对人工智能有一定的了解的同学,特别是对实际使⽤深度学习感兴趣的⼤学⽣、⼯程师和研究⼈员。但本教程并不要求你有任何深度学习或者机器学习的背景知识,我们将从头开始解释每⼀个概念。虽然深度学习技术与应⽤的阐述涉及了数学和编程,但你只需了解基础的数学和编程,例如基础的线性代数、微分和概率,以及基础的 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教程:安装以及基本操作的更多相关文章
- python之感知器-从零开始学深度学习
感知器-从零开始学深度学习 未来将是人工智能和大数据的时代,是各行各业使用人工智能在云上处理大数据的时代,深度学习将是新时代的一大利器,在此我将从零开始记录深度学习的学习历程. 我希望在学习过程中做到 ...
- 【动手学深度学习】Jupyter notebook中 import mxnet出错
问题描述 打开d2l-zh目录,使用jupyter notebook打开文件运行,import mxnet 出现无法导入mxnet模块的问题, 但是命令行运行是可以导入mxnet模块的. 原因: 激活 ...
- 小白学习之pytorch框架(2)-动手学深度学习(begin-random.shuffle()、torch.index_select()、nn.Module、nn.Sequential())
在这向大家推荐一本书-花书-动手学深度学习pytorch版,原书用的深度学习框架是MXNet,这个框架经过Gluon重新再封装,使用风格非常接近pytorch,但是由于pytorch越来越火,个人又比 ...
- 深度学习之TensorFlow安装与初体验
深度学习之TensorFlow安装与初体验 学习前 搞懂一些关系和概念 首先,搞清楚一个关系:深度学习的前身是人工神经网络,深度学习只是人工智能的一种,深层次的神经网络结构就是深度学习的模型,浅层次的 ...
- Deep Learning 19_深度学习UFLDL教程:Convolutional Neural Network_Exercise(斯坦福大学深度学习教程)
理论知识:Optimization: Stochastic Gradient Descent和Convolutional Neural Network CNN卷积神经网络推导和实现.Deep lear ...
- Deep Learning 13_深度学习UFLDL教程:Independent Component Analysis_Exercise(斯坦福大学深度学习教程)
前言 理论知识:UFLDL教程.Deep learning:三十三(ICA模型).Deep learning:三十九(ICA模型练习) 实验环境:win7, matlab2015b,16G内存,2T机 ...
- Deep Learning 12_深度学习UFLDL教程:Sparse Coding_exercise(斯坦福大学深度学习教程)
前言 理论知识:UFLDL教程.Deep learning:二十六(Sparse coding简单理解).Deep learning:二十七(Sparse coding中关于矩阵的范数求导).Deep ...
- Deep Learning 11_深度学习UFLDL教程:数据预处理(斯坦福大学深度学习教程)
理论知识:UFLDL数据预处理和http://www.cnblogs.com/tornadomeet/archive/2013/04/20/3033149.html 数据预处理是深度学习中非常重要的一 ...
- Deep Learning 10_深度学习UFLDL教程:Convolution and Pooling_exercise(斯坦福大学深度学习教程)
前言 理论知识:UFLDL教程和http://www.cnblogs.com/tornadomeet/archive/2013/04/09/3009830.html 实验环境:win7, matlab ...
随机推荐
- winform倒计时
public partial class Form1 : Form { private int Seconds; public Form1() { InitializeComponent(); // ...
- 2小程序canvas使用,及一些坑,以及自己的一些小总结
自己做了一个小程序,主要用于给头像加图标的那种,和qq似的,主要用canvas做的, 第一回用,掉了很多坑,所以今天总结一下自己所做的,如果大家有不理解的地方,欢迎提问:如果帮到大家的话,帮忙点个啥的 ...
- Vue.js学习笔记(代码)
##v-cloak v-text v-html v-bind v-on的使用 <!DOCTYPE html> <html> <head> < ...
- 洛谷 P1111 修复公路
题目链接 https://www.luogu.org/problemnew/show/P1111 以后只发题目链接!!! 题目大意 给出A地区的村庄数N,和公路数M,公路是双向的.并告诉你每条公路的连 ...
- 用 pdf.js兼容部分安卓显示PDF在线预览 时,a标签直接链接参数文件不能含中文的解决办法
例子: 项目部署在 Tomcat 上的: <a href="../generic/web/viewer.html?file=doc/register/要显示的文件.pdf" ...
- 模拟实现库函数的atoi、atof和itoa
1.函数atoi atoi (表示 alphanumeric to integer)是把字符串转换成整型数的一个函数.广泛的应用在计算机程序和办公软件中.atoi( ) 函数会扫描参数 nptr字符串 ...
- Vuejs自定义select2指令
在做select2插件的时候遇到一些坑,最终解决如下: Vue.directive('select2', { inserted: function (el, binding, vnode) { var ...
- .net基础学java系列(五)慢性自杀 之 沉沦在IDE中
最近在慢学习IDEA,总是喜欢与Visual Studio! 其实,对于Visual Studio,它的官方(https://docs.microsoft.com/zh-cn/visualstudio ...
- 【转载】详解一条sql语句的执行过程
转载自 https://www.cnblogs.com/cdf-opensource-007/p/6502556.html SQL是一套标准,全称结构化查询语言,是用来完成和数据库之间的通信的编程语言 ...
- The type 'Expression<>' is defined in an assembly that is not referenced.You must add a reference to assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
在我将一个.net framework 4.0+mvc4+ef5的项目,升级到.net framework 4.6.1+mvc5+ef6之后,解决了所有的升级带来的问题,唯独在razor的cshtml ...