mxnet安装及NDArray初体验
一、mxnet安装 (以下均为mac环境)
有二种方式:
1.1 用conda安装
#创建gluon目录
mkdir gluon-tutorials && cd gluon-tutorials #下载源代码
curl https://zh.gluon.ai/gluon_tutorials_zh.tar.gz -o tutorials.tar.gz #解压
tar -xzvf tutorials.tar.gz && rm tutorials.tar.gz
#设置清华镜像站
conda config --prepend channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
#进入解压后的目录
cd gluon-tutorials
#创建环境
conda env create -f environment.yml
#激活环境
source activate gluon
但是14行创建环境这里,这几天一直报连不上清华的镜像站,不知道跟开十久大有无关系,如果大家也遇到类似问题,可以用下面的方式
1.2 用brew+pip安装
brew update
brew tap homebrew/science
brew info opencv
brew install opencv
pip install mxnet
二、初试NDArray
2.1 先启用jupyter-notebook

2.2 创建矩阵
from mxnet import ndarray as nd
x = nd.array([[1,2],[3,4]])
print(x)
y = nd.array([[5,6],[7,8]])
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 矩阵转置
from mxnet import ndarray as nd
x = nd.array([[1,2],[3,4],[5,6]])
print(x)
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,自动扩容(行或列),然后进行运算,如下面的代码示例:
from mxnet import ndarray as nd
x = nd.array([[1,2,3,4]]).reshape([2,2])
y = nd.array([[5]])
print(x)
print(y)
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 取第几行/第几列
from mxnet import ndarray as nd
x = nd.array([[1,2],[3,4],[5,6],[7,8]])
print(x)
print(x[:,0]) #取第1列
print(x[1:2]) #取第2行
print(x[1:3,0:2]) #取第2到3行 + 第1到2列
i = nd.array([[0,2]])
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)

import mxnet.ndarray as nd
import mxnet.autograd as ag
x = nd.array([[1,2],[3,4]])
print(x)
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来处理数据)
mxnet安装及NDArray初体验的更多相关文章
- Sikuli 安装使用之初体验(为Sikuli X指定jre路径)
Sikuli 是一种新颖的图形脚本语言,在实际的自动化测试中如果仅仅依靠selenium 还是远远不够的,selenium自动化本身是存在着诸多缺陷的,基于浏览器之外的控件 (windows 控件 等 ...
- vue初学之node.js安装、cnpm安装、vue初体验
1. 如果本机没有安装node运行环境,请下载node 安装包进行安装.地址:https://nodejs.org/en/ 2.装完,使用cmd命令行输入:node -v回车 如果输出版本号则成功. ...
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
- 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验
在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...
- .net core安装及初体验
.net core安装及初体验 .net core 作为微软的新一代技术,在开发跨平台.微服务等方面有很大的优势,也更贴近现代的编码习惯.在2.0版发布很久以后,近期终于决定进行学习和体验. 安装 作 ...
- Nginx unit 源码安装初体验
Nginx unit 源码安装初体验 上次介绍了从yum的安装方法(https://www.cnblogs.com/wang-li/p/9684040.html),这次将介绍源码安装,目前最新版为1. ...
- 第三次随笔--安装虚拟机及学习linux系统初体验
第三次随笔--安装虚拟机及学习linux系统初体验 ·学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统 首先按照老师的提示步骤进行VirtualBox虚拟 ...
- 一 Hive安装及初体验
一 .Hive安装及初体验 1 .hive简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 1.1直接使用hadoop面临的问题 ...
- 香蕉派(or 皮?)上手初体验 -- 外观鉴赏,安装,配置&总结
一.前言及简单介绍 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG9uZ2Vyem9uZQ==/font/5a6L5L2T/fontsize/400/f ...
随机推荐
- discuz安装:mysqli_connect()不支持advice_mysqli_connect
原文:http://blog.csdn.net/changzhi1990/article/details/40983247 php -m 输出: PHP Warning: PHP Startup: U ...
- xshell xftp免费版下载方法
第一步:进入官网 https://www.netsarang.com/ 第二步:选中Free License 第三步:选中你要下的xftp或者xsell (l两个好像不能一块下,都要单独操作) 第四步 ...
- 中文多分类 BERT
直接把自己的工作文档导入的,由于是在外企工作,所以都是英文写的 Steps: git clone https://github.com/google-research/bert prepare dat ...
- exe4j中"this executable was created with an evaluation version exe4j"的解决
在使用exe4j时,如果您的exe4j没有注册,在运行有exe4j转换的*.jar为*.exe的可执行文件时,会提示:"this executable was created with an ...
- poj2155二维树状数组区间更新
垃圾poj又交不上题了,也不知道自己写的对不对 /* 给定一个矩阵,初始化为0:两种操作 第一种把一块子矩阵里的值翻转:0->1,1->0 第二种询问某个单元的值 直接累计单元格被覆盖的次 ...
- bzoj 1064 noi2008 假面舞会题解
莫名其妙的变成了我们的noip互测题... 其实这题思想还是比较简单的,只是分类不好分而已 其实就是一个dfs的事 首先,非常明显,原题目中的所有关系可以抽象成一个图(这是...显而易见的吧...) ...
- python 全栈开发,Day140(RabbitMQ,基于scrapy-redis实现分布式爬虫)
一.RabbitMQ 队列 在生产者消费模型中,比如去餐馆吃饭的例子.生产者相当于厨师,队列相当于服务员,消费者就是你. 我们必须通过服务员,才能吃饭! 如果队列满了,队列会一直hold住.必须让消费 ...
- vue2.0组件传值
props down emit up 嘿嘿 如果是第一次接触vue2.0组件传值的肯定很疑惑,这是什么意思(大神总结的,我也就是拿来用用) “down”—>指的是下的意思,即父组件向子 ...
- asp.net core 2.0 cookie的使用
本文假设读者已经了解cookie的概念和作用,并且在传统的.net framework平台上使用过. cookie的使用方法和之前的相比也有所变化.之前是通过cookie的add.set.clear. ...
- Linux 内核的定时机制实验
参考链接: Linux struct itimerval用法: http://blog.csdn.net/hbuxiaofei/article/details/35569229 Linux定时器实验: ...