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 ...
随机推荐
- html dom之iframe对象
当从父页面中需要获取使用iframe嵌入的内容时,可以使用图中后面的两个属性 var sonDocument = document.getElementById('iframe_id').conten ...
- 转载:configure执行流程(1.5.2)《深入理解Nginx》(陶辉)
原文:https://book.2cto.com/201304/19619.html 我们看到configure命令支持非常多的参数,读者可能会好奇它在执行时到底做了哪些事情,本节将通过解析confi ...
- nodejs服务器读取图片返回给前端(浏览器)显示
1 前言 项目需要用nodejs服务器给前端传递图片,网上找了好多资料,多数都是怎么在前端上传图片的,然后通过看runoob.com菜鸟教程,发现其实是非常简单,用express框架就行了. 2 代码 ...
- 利用pyecharts做地图数据展示
首先, pip install pyecharts 为了地图上的数据能显示完全,加载好需要的城市地理坐标数据. pip install echarts-countries-pypkg pip inst ...
- ThreadLocal和线程同步机制对比
共同点: ThreadLocal和线程同步机制都是为了解决多线程中相同变量的访问冲突问题. 区别: 在同步机制中,通过对象的锁机制保证同一时间只有一个线程访问变量. 这时该变量是多个线程共享的,使用同 ...
- 基于Golang设计一套微服务架构[转]
article- @嘟嘟噜- May/26/2018 18:35:30 如何基于Golang设计一套微服务架构 微服务(Microservices),这个近几年我们经常听到.那么现在市面上的的微服 ...
- CSS伪元素before、after妙用
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- python3笔记(一)初识Python
基础资料 什么是Python? Python官方网站 安装Python python的优点 完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行. pyth ...
- HttpClient + Testng实现接口测试
HttpClient教程 : https://www.yeetrack.com/?p=779 一,所需要的环境: 1,testng .httpclient和相关的依赖包 二.使用HttpClient登 ...
- 你需要知道的 .NET
1. 简述private.protected.public.internal 修饰符的访问权限. 答. private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该类内 ...