Fast.AI 第一课学习笔记

Lesson 1 Wiki http://wiki.fast.ai/index.php/Lesson_1
Lesson 1 Notes http://wiki.fast.ai/index.php/Lesson_1_Notes
以下是一些个人零碎的笔记,组织方式比较随意,觉得有用就拿走吧。


学习任务

  1. Cygwin
  2. Tmux
  3. Python基础语法
  4. Anaconda管理
  5. Jupyter Notebook 使用
  6. 开发环境调试完毕
  7. 下载训练数据并训练成功

Drivers 驱动

  • CUDA-一种由Nvidia推出的通用并行计算架构和应用程序编程接口模型。02
  • cuDNN-一套Nvidia专门为深度神经网络设计的GPU计算加速库。
    > nvidia-smi 展示nvidia显卡使用信息

Tools 各类相关工具介绍

Cygwin

A distribution of GNU and other Open Source tools running on Windows. It contains thousands of packages for Open Source world. They can be used for one of the provided Unix shells like bash, tcsh or zsh.

为了让cygwin安装软件更便捷,可将安装程序拷贝到安装目录(默认 c:\cygwin64\),并执行以下命令:
alias apt-get='/setup-x86_64.exe -q -P
安装软件时,只需要 apt-get wget crul 等。

Tmux

Terminal multiplexer. Let your program run on your server when you close the terminal, it alse split screen into multi input part.
教程: http://blog.jobbole.com/87278/ http://blog.jobbole.com/87584/

tmux 架构

tmux 和 screen 很像,但比 screen 更好。要问好在哪里,简单的回答就是虽然与 screen 的功能相同,但是 tmux 设计得更好。screen 虽然可用,但是很不稳定。

以下是一些 tmux 超越 screen 的地方:
• screen 的项目大体上已经终止了,并且代码中有大量的问题
• tmux 是一个活跃的项目,并且其代码库经常进行更新
• tmux 使用的是真正的客户端/服务器模型,而 screen 只是模拟了这种模型的行为
• tmux 同时支持 emacs 和 vim 的快捷键
• tmux 支持自动重命名窗口
• tmux 可以高度的脚本化
• tmux 的窗口分割功能更加先进

tmux 默认会先从 /etc/tmux.conf 加载系统级的配置项,然后从 ~/.tmux.conf 加载用户级的配置项。

tmux常见命令

•   C-b ?  显示帮助
•   C-b s  列出所有tmux会话,同 tmux ls
•   tmux attach 或 tmux a 连接到tmux进程,还可以指定进程 tmux a -t session-name
•   C-b d  断开当前会话,同 tmux detach,之前的工作不会丢失
•   C-b $ 重命名当前会话
•   C-b "  将窗口垂直分割成两个面板,C-b % 将窗口水平分割成两个面板
•   C-b arrow  光标移动到面板 panes
•   C-b }  与下一个面板交换位置
•   C-b {  与上一个面板交换位置

Source 命令

在本shell中执行脚本中的命令,通常用来设置别名、环境变量等。

Pip (Python Package Index)

常用命令:
pip search pkg_name 查找包的信息(Python3版本的,改为pip3)
pip install pkg_name 安装包(Python3版本的,改为pip3)

Jupyter Notebook

以前叫 ipython notebook,可用于文学式编码。独立出来后,现在也支持 python 外的其他语言。
运行方式:先切换到代码所在目录,再运行 >jupyter notebook

在notebook编辑界面(焦点不处于文本框内)常用快捷键(和vi和像):

- h  展示帮助,这是最重要的快捷键,常看看
- Enter 进入单元格编辑模式
- Esc 退出单元格编辑模式
- Ctrl+Enter 运行单元格。[ ]表示未运行,[ * ]表示运行中,[ 3 ]表示单元格运行的次序。
- a  上面增加一行
- b 下面增加一行
- dd  删除本行
- m 将单元格变为Markdown格式,支持Markdown语法(本文就是用Markdown写的)
- f 查找
- x 剪切单元格
- c 复制单元格
- v 粘贴单元格
- shift+m 合并选中单元格(按Shift多选。仅选中一个单元格时,合并下一个单元格)
- y 将单元格变为代码格式
- z 撤销操作
- s 保存

Jupyter Notebook Magic Words
可以在单元格中运行的特殊命令,能让你控制 notebook 本身或执行系统调用(例如更改目录)。
例如,可以使用 %matplotlib 将 matplotlib 设置为以交互方式在 notebook 中工作。

Magic 命令的前面带有一个或两个百分号(% 或 %%),分别对应行 Magic 命令和单元格 Magic 命令。
% 行 Magic 命令:仅应用于编写 Magic 命令时所在的行
%% 单元格 Magic 命令:应用于整个单元格。

常用Magic关键字

  • 代码计时 %timeit 。要测算整个单元格的运行时间,请使用 %%timeit
  • 使用 %matplotlib 将 matplotlib 设置为以交互方式在 notebook 中工作
  • 要直接在 notebook 中呈现图形,使用命令 %matplotlib inline
  • 在 %matplotlib inline 之后使用 %config InlineBackend.figure_format = 'retina' 来呈现分辨率较高的图像
  • %pdb 开启交互式调试器
  • 前置输入 ?? ,可展示调用的源码。

所有Magic关键词 http://ipython.readthedocs.io/en/stable/interactive/magics.html

Anaconda

A python environment and packages manager,是Python的一个包管理器又是一个环境管理器。
Anaconda = python + IPython Notebook + 集成开发环境Spyder + 版本切换工具 virtualenv

Anaconda多环境多版本python配置指导

Anaconda常用命令

•   conda creat -n python27 python=2.7    --新建一个名为 python27 的python 版本 2.7 环境,所有包得再次安装。
•   source activate python27   激活python27环境 (windows下命令为 activate python27)
•   source deactivate python27  取消激活python27环境 (windows下命令为 deactivate python27)
•   conda info -e  查看安装的conda环境,标 * 的为当前激活环境
•   conda list   列出当前环境已安装的包
•   conda search PackageName    --查找包的名字。有一些包conda没有,可用pip安装,如keras。
•   conda install PackageName     --install python package,like pip。默认安装到当前激活的环境
•   conda create -n 新环境名 --clone 旧环境名

注意:

  • 不同终端,当前激活的conda环境不一致,通过conda命令安装的包只影响当前环境。
  • Anaconda 4.1.0 之后,可在notebook里面直接选择python版本。

Python Libraries

  • Pip -Python安装包管理工具
  • Numpy -在Python中操作线性代数
  • Matplotlib -绘图和可视化(2D)
  • Scikit-learn -机器学习库
  • Scipy -数值计算库
  • Pandas -高性能数据分析库
  • Scrappy -网络数据爬取框架
  • NLTK -Nature Language Tool Kit 自然语言工具箱
  • Pattern -网络挖掘库
  • Seaborn -统计数据可视化
  • OpenCV -计算机视觉库
  • Rpy2 -R语言接口
  • Py-graphviz -统计数据绘图
  • OpenBLA02 -线性代数库

kaggle-cli

kaggle的命令行工具,可用来下载kaggle竞赛data,并提及成绩。
安装: pip install kaggle-cli

Machine Learning Framework / Libraries

  • TensorFlow-谷歌的开源DL框架,可以说支撑起了部分产品,比如谷歌翻译。
  • Theano-一个靠谱而且受欢迎的机器学习框架。
  • Caffe-来自伯克利的深度学习框架。
  • Torch-一个GPU优先的科学计算框架,广泛支持机器学习算法。
  • MXNET-可扩展性极强的DL系统,得到了亚马逊和一些大学的支持。

优秀的抽象库

  • Keras-一个很棒的用Python语言编写的神经网络库,基于TensorFlow或Theano开发
  • Keras中文文档 http://keras-cn.readthedocs.io/en/latest/
  • Lasagne-用于构造和训练神经网络的轻量库。

其它笔记

万能学习机,有三块至关重要的点:

• 无限灵活函数:神经网络是一种函数,是通用逼近机
• 万能参数拟合:梯度下降法、反向传播 Back-prop
• 快速和伸缩性:GPC、云计算

训练数据的文件夹结构:

• Train、valid目录下,需要把图片分门别类放在对应子目录下,如cat、dog
• 最好先创建 sample 目录来试验一下分类效果,其下目录结构同正式目录
• When you need to use a trained model for predictions on unseen/unlabeled test data, you can create a "test/unknown" subdirectory (as in "unknown class label") and place your data there.

The standard practice in building machine learning models is to split our data into the following subsets:
• Training set: This is the data that our algorithm is going to use to fit parameters in order to make predictions
• Validation set: The data we use to fine tuning our parameters. Fine tuning 的意思是只让分类模型输出指定的几个分类子集。
• Test set: The data we use to test our final model against. Since this data has not been seen by the model before, it is meant to simulate how it will perform against new data.

深度学习模型由两部分构成:

  1. 模型,如 vgg16.py
  2. 权重,如 vgg16.h5

名词解释

epoch :迭代次数
VGG Visual Geometry Group:牛津大学视觉几何组
one hot encoding :When encoding categorical variables, where an array containing just a single 1 in the position corresponding to the category, is very common in deep learning.
例如,当有两个类别: [0,1] ;当有三个类别: [1,0,0]


课程相关环境的搭建,请见我上篇文章:
创建Fast.AI深度学习环境虚拟机
Fast.AI课程文件、教学视频及学习环境虚拟机下载分享

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容