mxnet安装及NDArray初体验
2024-10-19 03:36:11
一、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来处理数据)
最新文章
- js(jQuery)获取时间的方法及常用时间类
- webpack解惑:require的五种用法 (转)
- 输入任意一个字符串,如:“abDEe23dJfd343dPOddfe4CdD5ccv!23rr”。取出该字符串中所有的字母。顺序不能改变!并把大写字母变成小写,小写字母变成大写!
- win10添加打印机--无法访问指定设备,路径或文件。。
- Zookeeper全解析——Client端(转)
- 用python自定义实现db2的连接池
- Matlab图像处理入门
- 关于C语言链表的学习
- cmake在实际复杂项目中的使用
- makefile中的target到底代表什么?
- cocos2d-x之蒙板,局部高亮可点,CCRenderTexture
- android-用xml自定义背景(可自定义显示具体那一边)
- 009一对一 主键关联映射_单向(one-to-one)
- 写给小白的JAVA链接MySQL数据库的步骤(JDBC):
- create-react-app中添加less支持
- hiberate 映射关系 详解
- Codeforces 208A-Dubstep(字符串)
- spark优化设置
- 51Nod 1815 调查任务
- Windows8 App Store 开发者会关心的文档
热门文章
- saltStack运维工具的部署及master迁移实现的过程详解
- Linux安全配置步骤简述
- OCM_第八天课程:Section4 &mdash;》数据管理
- 【mysql】MySQLdb中的事务处理
- yield()方法就是礼让,具体还是看cpu怎么分配
- HDU1711 Number Sequence(KMP模板题)
- 编译Caffe出错,解决方案记录
- asp.net core 微信APP支付(扫码支付,H5支付,公众号支付,app支付)之4
- 百度地图API如何给自定义覆盖物添加事件
- BZOJ5090 组题 BZOJ2017年11月月赛 二分答案 单调队列