一、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初体验的更多相关文章

  1. Sikuli 安装使用之初体验(为Sikuli X指定jre路径)

    Sikuli 是一种新颖的图形脚本语言,在实际的自动化测试中如果仅仅依靠selenium 还是远远不够的,selenium自动化本身是存在着诸多缺陷的,基于浏览器之外的控件 (windows 控件 等 ...

  2. vue初学之node.js安装、cnpm安装、vue初体验

    1. 如果本机没有安装node运行环境,请下载node 安装包进行安装.地址:https://nodejs.org/en/ 2.装完,使用cmd命令行输入:node -v回车 如果输出版本号则成功. ...

  3. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  4. 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验

    在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...

  5. .net core安装及初体验

    .net core安装及初体验 .net core 作为微软的新一代技术,在开发跨平台.微服务等方面有很大的优势,也更贴近现代的编码习惯.在2.0版发布很久以后,近期终于决定进行学习和体验. 安装 作 ...

  6. Nginx unit 源码安装初体验

    Nginx unit 源码安装初体验 上次介绍了从yum的安装方法(https://www.cnblogs.com/wang-li/p/9684040.html),这次将介绍源码安装,目前最新版为1. ...

  7. 第三次随笔--安装虚拟机及学习linux系统初体验

    第三次随笔--安装虚拟机及学习linux系统初体验 ·学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统 首先按照老师的提示步骤进行VirtualBox虚拟 ...

  8. 一 Hive安装及初体验

    一 .Hive安装及初体验 1 .hive简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 1.1直接使用hadoop面临的问题 ...

  9. 香蕉派(or 皮?)上手初体验 -- 外观鉴赏,安装,配置&amp;总结

    一.前言及简单介绍 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG9uZ2Vyem9uZQ==/font/5a6L5L2T/fontsize/400/f ...

随机推荐

  1. discuz安装:mysqli_connect()不支持advice_mysqli_connect

    原文:http://blog.csdn.net/changzhi1990/article/details/40983247 php -m 输出: PHP Warning: PHP Startup: U ...

  2. xshell xftp免费版下载方法

    第一步:进入官网 https://www.netsarang.com/ 第二步:选中Free License 第三步:选中你要下的xftp或者xsell (l两个好像不能一块下,都要单独操作) 第四步 ...

  3. 中文多分类 BERT

    直接把自己的工作文档导入的,由于是在外企工作,所以都是英文写的 Steps: git clone https://github.com/google-research/bert prepare dat ...

  4. exe4j中"this executable was created with an evaluation version exe4j"的解决

    在使用exe4j时,如果您的exe4j没有注册,在运行有exe4j转换的*.jar为*.exe的可执行文件时,会提示:"this executable was created with an ...

  5. poj2155二维树状数组区间更新

    垃圾poj又交不上题了,也不知道自己写的对不对 /* 给定一个矩阵,初始化为0:两种操作 第一种把一块子矩阵里的值翻转:0->1,1->0 第二种询问某个单元的值 直接累计单元格被覆盖的次 ...

  6. bzoj 1064 noi2008 假面舞会题解

    莫名其妙的变成了我们的noip互测题... 其实这题思想还是比较简单的,只是分类不好分而已 其实就是一个dfs的事 首先,非常明显,原题目中的所有关系可以抽象成一个图(这是...显而易见的吧...) ...

  7. python 全栈开发,Day140(RabbitMQ,基于scrapy-redis实现分布式爬虫)

    一.RabbitMQ 队列 在生产者消费模型中,比如去餐馆吃饭的例子.生产者相当于厨师,队列相当于服务员,消费者就是你. 我们必须通过服务员,才能吃饭! 如果队列满了,队列会一直hold住.必须让消费 ...

  8. vue2.0组件传值

    props down   emit up 嘿嘿    如果是第一次接触vue2.0组件传值的肯定很疑惑,这是什么意思(大神总结的,我也就是拿来用用) “down”—>指的是下的意思,即父组件向子 ...

  9. asp.net core 2.0 cookie的使用

    本文假设读者已经了解cookie的概念和作用,并且在传统的.net framework平台上使用过. cookie的使用方法和之前的相比也有所变化.之前是通过cookie的add.set.clear. ...

  10. Linux 内核的定时机制实验

    参考链接: Linux struct itimerval用法: http://blog.csdn.net/hbuxiaofei/article/details/35569229 Linux定时器实验: ...