zoukankan      html  css  js  c++  java
  • 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来处理数据)

  • 相关阅读:
    LeetCode 252. Meeting Rooms
    LeetCode 161. One Edit Distance
    LeetCode 156. Binary Tree Upside Down
    LeetCode 173. Binary Search Tree Iterator
    LeetCode 285. Inorder Successor in BST
    LeetCode 305. Number of Islands II
    LeetCode 272. Closest Binary Search Tree Value II
    LeetCode 270. Closest Binary Search Tree Value
    LeetCode 329. Longest Increasing Path in a Matrix
    LintCode Subtree
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/mxnet-install-and-ndarray-demo.html
Copyright © 2011-2022 走看看