# mxnet安装及NDArray初体验

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 ```

1.2 用brew+pip安装

```1 brew update
2 brew tap homebrew/science
3 brew info opencv
4 brew install opencv
5 pip install mxnet```

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 广播

```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列的矩阵，图解如下：

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
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)>```

1、https://mxnet.incubator.apache.org/api/python/ndarray.html （ndarray官方文档）

2、https://zh.gluon.ai/chapter_crashcourse/ndarray.html  (使用NDArray来处理数据)

1025 篇文章76 人订阅

0 条评论

## 相关文章

38270

### pytorch中读取模型权重数据、保存数据方法总结

pytorch中保存数据策略在长时间的深度训练中有很大的作用，我们可以通过保存训练好的权重，然后等到下次使用的时候再取出来。另外我们也可以通过迁移学习使用别人训...

7.7K80

388110

1.7K20

60960

37030

89720

19430

### TensorFlow分布式全套（原理，部署，实例）

TF的实现分为了单机实现和分布式实现，在分布式实现中，需要实现的是对client，master，worker process不在同一台机器上时的支持。数据量很大...

1.1K60

1.2K80