mxnet安装及NDArray初体验
时间:2022-04-22
本文章向大家介绍mxnet安装及NDArray初体验,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、mxnet安装 (以下均为mac环境)
有二种方式:
1.1 用conda安装
1 #创建gluon目录
2 mkdir gluon-tutorials && cd gluon-tutorials
3
4 #下载源代码
5 curl https://zh.gluon.ai/gluon_tutorials_zh.tar.gz -o tutorials.tar.gz
6
7 #解压
8 tar -xzvf tutorials.tar.gz && rm tutorials.tar.gz
9 #设置清华镜像站
10 conda config --prepend channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
11 #进入解压后的目录
12 cd gluon-tutorials
13 #创建环境
14 conda env create -f environment.yml
15 #激活环境
16 source activate gluon
但是14行创建环境这里,这几天一直报连不上清华的镜像站,不知道跟开十久大有无关系,如果大家也遇到类似问题,可以用下面的方式
1.2 用brew+pip安装
1 brew update
2 brew tap homebrew/science
3 brew info opencv
4 brew install opencv
5 pip install mxnet
二、初试NDArray
2.1 先启用jupyter-notebook
2.2 创建矩阵
1 from mxnet import ndarray as nd
2 x = nd.array([[1,2],[3,4]])
3 print(x)
4 y = nd.array([[5,6],[7,8]])
5 print(y)
[[ 1. 2.]
[ 3. 4.]]
<NDArray 2x2 @cpu(0)>
[[ 5. 6.]
[ 7. 8.]]
<NDArray 2x2 @cpu(0)>
2.3 矩阵加法
print(x+y)
[[ 6. 8.]
[ 10. 12.]]
<NDArray 2x2 @cpu(0)>
2.4 矩阵数乘(点乘)
print(x*y)
[[ 5. 12.]
[ 21. 32.]]
<NDArray 2x2 @cpu(0)>
2.5 矩阵乘法(叉乘)
print(nd.dot(x,y))
[[ 19. 22.]
[ 43. 50.]]
<NDArray 2x2 @cpu(0)>
2.5 e的指数运算
print(nd.exp(x))
[[ 2.71828175 7.38905621]
[ 20.08553696 54.59814835]]
<NDArray 2x2 @cpu(0)>
上述几个操作的公式图解:
2.6 生成正态分布随机矩阵
x=nd.random_normal(0, 1, shape=(2, 2))
print(x)
[[ 0.45787829 0.93632793]
[-0.89425808 0.35744399]]
<NDArray 2x2 @cpu(0)>
2.7 矩阵转置
1 from mxnet import ndarray as nd
2 x = nd.array([[1,2],[3,4],[5,6]])
3 print(x)
4 print(x.T) #转置
[[ 1. 2.]
[ 3. 4.]
[ 5. 6.]]
<NDArray 3x2 @cpu(0)>
[[ 1. 3. 5.]
[ 2. 4. 6.]]
<NDArray 2x3 @cpu(0)>
2.8 广播
如果2个矩阵A,B进行运算时,行或列的数量不满足运算要求,ndarray会尝试将第2个矩阵B,自动扩容(行或列),然后进行运算,如下面的代码示例:
1 from mxnet import ndarray as nd
2 x = nd.array([[1,2,3,4]]).reshape([2,2])
3 y = nd.array([[5]])
4 print(x)
5 print(y)
6 print(x+y)
[[ 1. 2.]
[ 3. 4.]]
<NDArray 2x2 @cpu(0)>
[[ 5.]]
<NDArray 1x1 @cpu(0)>
[[ 6. 7.]
[ 8. 9.]]
<NDArray 2x2 @cpu(0)>
x是一个2行2列的矩阵,而y是1行1列的矩阵,2个矩阵进行加法运算时,ndarray会将y自动复制扩展成2行2列的矩阵,图解如下:
注:广播这种复制扩容的行为,并非对所有操作都适用,比如叉乘就会报错(如:nd.dot(x,y)大家自己自行测试下),其实很容易埋坑,个人并不推荐使用。
2.9 取第几行/第几列
1 from mxnet import ndarray as nd
2 x = nd.array([[1,2],[3,4],[5,6],[7,8]])
3 print(x)
4 print(x[:,0]) #取第1列
5 print(x[1:2]) #取第2行
6 print(x[1:3,0:2]) #取第2到3行 + 第1到2列
7 i = nd.array([[0,2]])
8 print(nd.take(x,i)) #取第1行、第3行
[[ 1. 2.]
[ 3. 4.]
[ 5. 6.]
[ 7. 8.]]
<NDArray 4x2 @cpu(0)>
[ 1. 3. 5. 7.]
<NDArray 4 @cpu(0)>
[[ 3. 4.]]
<NDArray 1x2 @cpu(0)>
[[ 3. 4.]
[ 5. 6.]]
<NDArray 2x2 @cpu(0)>
[[[ 1. 2.]
[ 5. 6.]]]
<NDArray 1x2x2 @cpu(0)>
2.10 计算欧氏距离(norm)
1 import mxnet.ndarray as nd
2 import mxnet.autograd as ag
3 x = nd.array([[1,2],[3,4]])
4 print(x)
5 nd.norm(x)
[[ 1. 2.]
[ 3. 4.]]
<NDArray 2x2 @cpu(0)>
[ 5.47722578]
<NDArray 1 @cpu(0)>
更多ndarray的使用,请参考:
1、https://mxnet.incubator.apache.org/api/python/ndarray.html (ndarray官方文档)
2、https://zh.gluon.ai/chapter_crashcourse/ndarray.html (使用NDArray来处理数据)
- 1578: [Usaco2009 Feb]Stock Market 股票市场
- webp图片实践之路
- 3522: [Poi2014]Hotel
- 3299: [USACO2011 Open]Corn Maze玉米迷宫
- 2272: [Usaco2011 Feb]Cowlphabet 奶牛文字
- 1632: [Usaco2007 Feb]Lilypad Pond
- 1630/2023: [Usaco2005 Nov]Ant Counting 数蚂蚁
- Java设计模式(七)Decorate装饰器模式
- 1623: [Usaco2008 Open]Cow Cars 奶牛飞车
- 1622: [Usaco2008 Open]Word Power 名字的能量
- 3297: [USACO2011 Open]forgot
- 1740: [Usaco2005 mar]Yogurt factory 奶酪工厂
- 1741: [Usaco2005 nov]Asteroids 穿越小行星群
- 3298: [USACO 2011Open]cow checkers
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Oracle表级备份
- Linux脚本运行报错解决方法 bad interpreter: No such file or directory
- MySQLdump里的秘密,终于被我发现了
- HTTP各种特性总览
- django查询今天,昨天,一周,分组统计月,年
- 关于 z-index,你可能一直存在误区
- Java浮点数机制及所存在的问题
- SAP UI5和React的页面渲染性能比较
- SAP CDS view自学教程之一:如何测试基于SAP CDS view自动生成的OData服务
- SAP CDS view自学教程之二:当SAP CDS view被激活时,背后发生了什么
- SAP Fiori Elements原理介绍之类型为Value Help的Smart Field工作原理
- 万字详述 MySQL ProxySQL
- 在SAP WebClient UI里使用AJAX进行异步数据读取
- Angular Component TypeScript代码和最后转换生成的JavaScript代码比较
- 如何使用Angular FormBuilder