今天 , 笔者将和读者一起聊聊一个令人轻松愉快的话题, 关于深度学习.
题外话
最近, 笔者取关了不少微信公众号, 套路太深且广告太多, 难道不明白大部分人的时间都不够用吗! 说什么文正香, 意更深, 甚荒唐, 到头来不过是为广告作嫁衣裳.
聊人生就好好聊, 写技术就认真写, 谈感情就专心谈. 如果是广告, 请光明正大的宣传, 至少读者看标题就可以选择不看, 别把一篇文章搞的四分五裂, 稀巴烂.
朋友圈官方推送的广告貌似多了起来, 好歹加个开关设置, 一键取消广告显示, 如果舍不得, 试试 hou zhe lian pi 搞个啥会员的, 看看香不香.
各有所好, 无可厚非, 请相互尊重.
笔者写技术文章纯粹为了分享和交流学习, 目前还会继续使用公众号发表文章, 以后再探索或创建其他文明开放的方式.
正题
关于前面的题外话, 权且当做笑话看好了, 笑一笑十年少.
下面我们正式进入主题.
关于深度学习, 一直不缺话题, 而且这些年深度学习领域一直迅速发展, 推动了计算机视觉, 自然语言处理, 自动语音识别, 强化学习等领域的飞速发展. 应用场景也很多, 比如人脸识别, 图像识别, 文字识别, 自动驾驶, 机器人客服等.
今天, 我们聚焦开源项目 MXNet 以及一个非常好的深度学习的社区(https://github.com/d2l-ai), 希望通过本篇文章的讲解, 对大家进入深度学习领域有所帮助.
MXNet
MXNet 是一款轻量灵活的深度学习框架. 查看官网, 发现 MXNet 生态系统比以前庞大许多, 提供丰富的库和工具支持开发.
1. D2L.ai
官方提供的带有交互式的 Jupyter notebook, 数学公式和专门讨论论坛的深度学习书. 对于初学者, 带来的非常大的帮助.
下文会对 d2l.ai 进行详细讲解.
2. 丰富的工具
GluonCV
GluonCV 提供了计算机视觉领域最先进的 (SOTA) 深度学习算法的实现, 可以帮助工程师, 研究人员和学生快速制作产品原型, 验证新想法并学习计算机视觉.
GluonNLP
GluonNLP 提供了 NLP 领域顶级深度学习模型的实现, 且建立了文本数据管道和模型的模块. 设计上, 它同样也是为了让工程师, 研究员和学生能快速的实现研究思路, 做出产品原型.
Gluon Time Series (GluonTS)
一种使用 Gluon API 的 MXNet 时间序列分析工具包. 借助 GluonTS, 用户可以利用包含有用抽象的预构建块来构建时间序列模型.
3. 生态系统
MXNet 生态系统还是比较丰富的, 读者可以去寻找自己感兴趣的项目, 比如人脸识别项目 InsightFace(https://github.com/deepinsight/insightface).
有些项目需要 GPU 的支持, 后续笔者会选择一些项目进行研究, 实战和技术输出.
接下来, 笔者带大家看一下 D2L.ai 这个开源项目, 动手学习深度学习.
D2L.ai
D2L.ai 开源项目致力于:
所有人均可免费获取学习深度学习的资料
提供足够的技术深度, 从而帮助读者实际成为深度学习应用科学家: 既理解数学原理, 又能够实现并不断改进方法
包含可运行的代码, 为读者展示如何在实际中解决问题. 这样不仅直接将数学公式对应成实际代码, 而且可以修改代码, 观察结果并及时获取经验
允许我们和整个社区不断快速迭代内容, 从而紧跟仍在高速发展的深度学习领域
由包含有关技术细节问答的论坛作为补充, 使大家可以相互答疑并交换经验
感谢原创者以及社区技术爱好者的贡献.
项目信息
GitHub 英文项目和 PDF 书籍:
- https://github.com/d2l-ai/d2l-en
- https://d2l.ai/d2l-en.pdf
- https://d2l.ai/d2l-en.zip
GitHub 中文项目和 PDF 书籍:
- https://github.com/d2l-ai/d2l-zh
- https://zh.d2l.ai/d2l-zh.pdf
- https://zh.d2l.ai/d2l-zh.zip
伯克利深度学习课程:
https://courses.d2l.ai/berkeley-stat-157/index.html
社区讨论地址:
https://discuss.gluon.ai
这里简单列一下官方的介绍:
该开源项目全面介绍深度学习从模型构造到模型训练的方方面面, 以及它们在计算机视觉和自然语言处理中的应用. 不仅将阐述算法原理, 还将基于 Apache MXNet 对算法进行实现, 并实际运行它们.
项目中的每一节都是一个 Jupyter Notebook. 它将文字, 公式, 图像, 代码和运行结果结合在了一起. 读者不但能直接阅读它们, 而且可以运行它们以获得交互式的学习体验.
本书并不要求读者有任何深度学习或者机器学习的背景知识, 我们将从头开始解释每一个概念. 读者只需具备基础的数学和编程, 如基础的线性代数, 微分和概率, 以及基础的 Python 编程即可.
如果对 Python 不熟悉, 建议提前学习一下, 推荐的学习地址:
http://www.runoob.com/python/python-tutorial.html https://www.learnpython.org
对于 Python 快速入门即可, 不是要成为所谓的专家, 保持初心啊. 否则本来是要学习深度学习的, 结果跑去钻研 Python, 然后又走了一遍从入门到放弃, 芝麻和西瓜都丢了, 甚是可惜.
最后笔者再补充几点:
本书选择的深度学习框架是 MXNet
希望读者根据每个章节认真学习, 并坚持下去
本书力求提供一个多方位交互式的学习体验
具体细节, 感兴趣直接访问官方介绍:
https://zh.d2l.ai/chapter_how-to-use/how-to-use.html
环境准备
1. 安装 miniconda
官方下载页面:
https://docs.conda.io/en/latest/miniconda.html
笔者基于 MacOSX 实战操作.
下载安装脚本并运行
- $ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
- $ sh Miniconda3-latest-MacOSX-x86_64.sh
安装完成后, 需要让 conda 生效, 需要运行一次 source ~/.bash_profile 或重启命令行应用.
2. 下载示例代码
conda 环境准备完成后, 接着下载包含本书全部代码的压缩包.
- $ mkdir d2l-zh && cd d2l-zh
- $ wget https://zh.d2l.ai/d2l-zh-1.1.zip
- $ unzip d2l-zh-1.1.zip && rm d2l-zh-1.1.zip
3. 使用 conda 创建虚拟 (运行) 环境
- # 配置清华 PyPI 镜像(如无法运行, 将 pip 版本升级到>= 10.0.0)
- $ pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
- # 若 conda 版本低于 4.4, 使用命令 activate gluon
- # 笔者的环境 conda 版本为 4.8.2
- $ conda activate gluon
- # 若 conda 版本低于 4.4, 使用命令 deactivate
- # 笔者的环境 conda 版本为 4.8.2
- $ conda deactivate
- from gluoncv import model_zoo, data, utils
- from matplotlib import pyplot as plt
- im_fname = utils.download('https://github.com/dmlc/web-data/blob/master/' + 'gluoncv/detection/street_small.jpg?raw=true', path='street_small.jpg')
- x, img = data.transforms.presets.ssd.load_test(im_fname, short=512)
- print('Shape of pre-processed image:', x.shape)
- class_IDs, scores, bounding_boxes = net(x)
- ax = utils.viz.plot_bbox(img, bounding_boxes[0], scores[0],
- class_IDs[0], class_names.NET.classes)
- plt.show()
- https://d2l.ai
- https://gluon-cv.mxnet.io/build/examples_detection/demo_ssd.html#sphx-glr-build-examples-detection-demo-ssd-py
来源: http://www.tuicool.com/articles/BNFbE3r