动手学深度学习——第一课笔记(上)

第一课:从上手到多类分类

课程首先介绍了深度学习的很多应用:例如增强学习、物体识别、语音识别、机器翻译、推荐系统、广告点击预测等。

课程目的:通过动手实现来理解深度学习,跟工业界应用相比,主要只是数据规模和模型复杂度的区别。

深度学习的轮子很多,例如Caffe,TensorFlow,mxnet,PyTorch,CNTK等。它们之间的主要区别在于:1.便利的开发;2.方便的部署。

mxnet之上的一个package是Gluon,主要目的是一次解决开发和部署。课程主要分为以下三个部分:

1. 环境配置

我的配置环境是Mac,Linux平台类似。

mxnet安装命令如下,前提是已经安装好了Anaconda,Anaconda的安装可以参考官网:

pip install mxnet

测试mxnet:

>>> import mxnet
>>> print mxnet.__version__
0.11.0

然后安装notedown,运行Jupyter并加载notedown插件:

pip install https://github.com/mli/notedown/tarball/master
jupyter notebook --NotebookApp.contents_manager_class='notedown.NotedownContentsManager'

通过ExecutionTime插件来对每个cell的运行计时,国内使用豆瓣源。

pip install jupyter_contrib_nbextensions -i https://pypi.douban.com/simple
jupyter contrib nbextension install --user
jupyter nbextension enable execute_time/ExecuteTime

2. NDArray

NDArray是MXNet储存和变换数据的主要工具,它与numpy非常类似。NDArray提供了CPU和GPU的异步计算,还提供了自动求导。NDArray的基本用法:

from mxnet import ndarray as nd

# 创建矩阵
nd.zeros((3, 4))
x = nd.ones((3, 4))
nd.array([[1,2],[2,3]])
y = nd.random_normal(0, 1, shape=(3, 4))

# 查看矩阵大小
y.shape

# 查看矩阵元素个数
y.size

# 矩阵加法
x + y

# 矩阵乘法
x * y

# 指数运算
nd.exp(y)

# 矩阵乘法
nd.dot(x, y.T)

# 广播操作
a = nd.arange(3).reshape((3,1))
b = nd.arange(2).reshape((1,2))
print('a:', a)
print('b:', b)
print('a+b:', a+b)

# NDArray与Numpy的转换
import numpy as np
x = np.ones((2,3))
y = nd.array(x)  # numpy -> mxnet
z = y.asnumpy()  # mxnet -> numpy
print([z, y])

NDArray的自动求导:

import mxnet.ndarray as nd
import mxnet.autograd as ag


# 定义矩阵
x = nd.array([[1, 2], [3, 4]])

# 添加自动求导
x.attach_grad()


# 记录x的变化
with ag.record():
    y = x * 2
    z = y * x

# 求导
z.backward()

# 判断导数是否相等
x.grad == 4*x

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏梦里茶室

Google机器学习教程心得(一)

Supervised learning 原本我们是教会机器我们的规则,由机器执行规则进行分类,识别。 但规则总有漏洞,我们总能举出规则的反例。 我们不能为每种反...

2097
来自专栏AI研习社

Github 项目推荐 | 微软开源 MMdnn,模型可在多框架间转换

近期,微软开源了 MMdnn,这是一套能让用户在不同深度学习框架间做相互操作的工具。比如,模型的转换和可视化,并且可以让模型在 Caffe、Keras、MXNe...

3528
来自专栏从流域到海域

使用TensorFlow甄别图片中的时尚单品

1945
来自专栏机器之心

教程 | 在Cloud ML Engine的TPU上从头训练ResNet

张量处理单元(TPU)是能够大大加快深度学习模型训练速度的硬件加速器。在斯坦福大学进行的独立测试中,在 TPU 上训练的 ResNet-50 模型能够在 Ima...

702
来自专栏owent

POJ PKU 2826 An Easy Problem?! 解题报告

题目链接: http://acm.pku.edu.cn/JudgeOnline/problem?id=2826

581
来自专栏专知

【下载】PyTorch 实现的YOLO v2目标检测算法

【导读】目标检测是计算机视觉的重要组成部分,其目的是实现图像中目标的检测。YOLO是基于深度学习方法的端到端实时目标检测系统(YOLO:实时快速目标检测)。YO...

4096
来自专栏数据结构与算法

1077 多源最短路

1077 多源最短路  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果 题目描述 Descripti...

3278
来自专栏深度学习思考者

DL开源框架Caffe | 用训练好的模型对数据进行预测

一句话理解Caffe: Caffe的万丈高楼(Net)是按照我们设计的图纸(prototxt),用很多砖块(Blob)筑成一层层(Layer)楼房,最后通过某...

2179
来自专栏Python小屋

使用Python模拟伪随机数生成原理

伪随机数生成有很多种方法,其中一个是这样的:rNew = (a*rOld + b) % (end-start),然后设置rOld = rNew,一般要求用户指定...

2415
来自专栏机器之心

资源 | 微软开源MMdnn:实现多个框架之间的模型转换

选自GitHub 作者:Kit CHEN等 机器之心编译 参与:路雪、思源 近日,微软开源 MMdnn,可用于转换、可视化和诊断深度神经网络模型的全面、跨框架解...

3406

扫码关注云+社区