zoukankan      html  css  js  c++  java
  • 从零开始学深度学习mxnet教程:安装以及基本操作

    一.导言

    本教程适合对人工智能有一定的了解的同学,特别是对实际使⽤深度学习感兴趣的⼤学⽣、⼯程师和研究⼈员。但本教程并不要求你有任何深度学习或者机器学习的背景知识,我们将从头开始解释每⼀个概念。虽然深度学习技术与应⽤的阐述涉及了数学和编程,但你只需了解基础的数学和编程,例如基础的线性代数、微分和概率,以及基础的 Python 编程本教程将全⾯介绍深度学习从模型构造到模型训练的⽅⽅⾯⾯,以及它们在计算机视觉和⾃然语⾔处理中的应⽤。我们不仅将阐述算法原理,还将基于 Apache MXNet 来演⽰它们的实现和运⾏。如果你之前没有接触过 Python,可以参考中⽂教程http://www.runoob.com/python/python-tutorial.html 或英⽂教程 http://learnpython.org/ 。当然,如果你只对本教程中的数学部分感兴趣,你可以忽略掉编程部分,反之亦然。

    二.安装

    由于笔者本人用的是windows操作系统,因此只需要在windows命令行界面的模式下输入:

    pip install mxnet

    于是很快就可以安装完成了,如果不能安装的话,我们可以采用游侠加速器,在电脑上安装这个加速器,注册登录之后就可以使用了。这个加速器是可以免费使用一天的,之后的话基本上是一个月30元,对于学习计算机的朋友来说也并不是很贵,可以左转到百度搜索下载游侠加速器即可。

     三.1:数据操作

    在深度学习中,我们通常会频繁地对数据进⾏操作。作为动⼿学深度学习的基础,本节将介绍如何对内存中的数据进⾏操作。在MXNet中,NDArray是存储和变换数据的主要⼯具,数据操作对于我们之后的学习相当重要。如果你之前⽤过NumPy,你会发现NDAr-ray 和 NumPy 的多维数组⾮常类似。然而,NDArray 提供 GPU 计算和⾃动求梯度等更多功能,这些使得 NDArray 更加适合深度学习。

    首先我们从MXNet当中导入ndarray模块,这里的nd是ndarray的缩写形式。

    我们输入:

    from mxnet import nd

    然后我们使用arange函数创建一个行向量:

     x = nd.arange(12)

    输出结果是:

    [ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.]

    <NDArray 12 @cpu(0)>这时返回了⼀个 NDArray 实例,其中包含了从 0 开始的 12 个连续整数。从打印 x 时显⽰的属性<NDArray 12 @cpu(0)> 可以看出,它是⻓度为 12 的⼀维数组,且被创建在 CPU 主内存上。其中“@cpu(0)”⾥的 0 没有特别的意义,并不代表特定的CPU核心。我们接下来通过shape函数来获取这个对象的形状:

     x.shape 

    输出:

    12,)

    我们同时可以利用size属性来得到这个对象实例当中总共的元素个数:

     x.size

    输出:

    12

    下⾯使⽤ reshape 函数把⾏向量 x 的形状改为(3,4),也就是⼀个 3 ⾏ 4 列的矩阵,并记作X,除了形状不变之外,x当中的元素保持不变。

     X = x.reshape((3, 4))

    输出:

    [[ 0. 1. 2. 3.]
    [ 4. 5. 6. 7.]
    [ 8. 9. 10. 11.]]
    <NDArray 3x4 @cpu(0)>

    接下来,我们来输出一个张量(也就是三维的矩阵),并且让矩阵当中的每一个元素均为零:

     nd.zeros((2, 3, 4))

    输出结果:

    [[[0. 0. 0. 0.]
    [0. 0. 0. 0.]
    [0. 0. 0. 0.]]
    [[0. 0. 0. 0.]
    [0. 0. 0. 0.]
    [0. 0. 0. 0.]]]
    <NDArray 2x3x4 @cpu(0)>

    同时我们还可以创建各元素均为1的张量,输入:

     nd.ones((3, 4))

    输出:

    [[1. 1. 1. 1.]
    [1. 1. 1. 1.]
    [1. 1. 1. 1.]]
    <NDArray 3x4 @cpu(0)>

    我们也可以自定义我们要创建的NDArray当中的每一个元素的值:

     Y = nd.array([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])

    输出:

    [[2. 1. 4. 3.]
    [1. 2. 3. 4.]
    [4. 3. 2. 1.]]
    <NDArray 3x4 @cpu(0)>

    有些情况下,我们需要随机⽣成 NDArray 中每个元素的值。下⾯我们创建⼀个形状为(3,4)的NDArray。它的每个元素都随机采样于均值为 0 标准差为 1 的正态分布。

    输入:

    nd.random.normal(0, 1, shape=(3, 4))

    输出:

    [[ 2.2122064 0.7740038 1.0434405 1.1839255 ]
    [ 1.8917114 -1.2347414 -1.771029 -0.45138445]
    [ 0.57938355 -1.856082 -1.9768796 -0.20801921]]
    <NDArray 3x4 @cpu(0)>

    三.2:运算

    NDArray ⽀持⼤量的运算符(operator)。例如,我们可以对之前创建的两个形状为(3, 4)的NDArray 做按元素加法。所得结果形状不变。

    比如我们可以做这些矩阵运算:
    1. X + Y

    2. X * Y

    3. X / Y

    4. Y.exp()(矩阵的每个元素做指数运算)

    输出:

    [[ 7.389056 2.7182817 54.59815 20.085537 ]
    [ 2.7182817 7.389056 20.085537 54.59815 ]
    [54.59815 20.085537 7.389056 2.7182817]]
    <NDArray 3x4 @cpu(0)>

    除了按元素计算外,我们还可以使⽤ dot 函数做矩阵运算。下⾯将 X 与 Y 的转置做矩阵乘法。由于 X 是 3 ⾏ 4 列的矩阵,Y 转置为 4 ⾏ 3 列的矩阵,两个矩阵相乘得到 3 ⾏ 3 列的矩阵。

     nd.dot(X, Y.T)

    输出:

    [[ 18. 20. 10.]
    [ 58. 60. 50.]
    [ 98. 100. 90.]]
    <NDArray 3x3 @cpu(0)>

    这就是我们今天的数据操作的教程了,希望大家能够亲自上手试一试,才会有好的效果。

     

  • 相关阅读:
    redis五大基本类型---String
    记录LVS搭建,DR模式,永久生效
    zabbix5.0安装,配置邮件报警,钉钉报警
    在zabbix-server的web界面添加agent主机
    部署 zabbix的客户端 zabbix-agent
    Linux 系统查看服务器SN序列号以及服务器型号
    记录在Linux系统使用vsftpd服务
    软件工程第三次实验
    软件工程第二次实验
    软件工程第一次实验
  • 原文地址:https://www.cnblogs.com/geeksongs/p/10060464.html
Copyright © 2011-2022 走看看