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来处理数据)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏木子昭的博客

创意终端影集左侧效果图:

左侧效果图: ? ? ? ? ? 实现思路: 通过python的PIL库,将彩色转黑白(256种灰度),创建字符集,建立字符集与灰度的映射 ? 动图 把照片裁成...

38270
来自专栏深度学习那些事儿

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

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

7.7K80
来自专栏机器之心

教程 | TensorFlow 官方解读:如何在多系统和网络拓扑中构建高性能模型

选自Tensorflow 机器之心编译 参与:黄玉胜、黄小天 这个文档和附带的脚本详细介绍了如何构建针对各种系统和网络拓扑的高性能可拓展模型。这个技术在本文档中...

388110
来自专栏wOw的Android小站

[Tensorflow] Faster R-CNN 和自定义 VOC 数据集

看了pascal_voc.py代码,可以把代码的jpg拼接改成png,这样可以不做上一步.

1.7K20
来自专栏机器学习算法工程师

应用TF-Slim快速实现迁移学习

作者:张旭 编辑:张欢 这是一篇以实践为主的入门文章,目的在于用尽量少的成本组织起来一套可以训练和测试自己的分类任务的代码,其中就会用到迁移学习,TF-Sli...

60960
来自专栏PaddlePaddle

【进阶篇】C-API 使用流程

编写|PaddlePaddle 排版|wangp 这篇推文介绍 PaddlePaddle C-API 整体使用流程 1 使用流程 使用 C-API 的工作流...

37030
来自专栏用户2442861的专栏

caffe python 图片训练识别 实例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/details...

89720
来自专栏机器学习算法与Python学习

不会用Photoshop抠图?Mask R-CNN助你一键“除”人

19430
来自专栏人工智能LeadAI

TensorFlow分布式全套(原理,部署,实例)

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

1.1K60
来自专栏深度学习与计算机视觉

手把手教你如何应用TF-Slim快速实现迁移学习

这是一篇以实践为主的入门文章,目的在于用尽量少的成本组织起来一套可以训练和测试自己的分类任务的代码,其中就会用到迁移学习,TF-Slim库的内容,所以我们分为下...

1.2K80

扫码关注云+社区

领取腾讯云代金券