本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

报码:实验研究工作流程详解:如何把你的机器学习想(2)

时间:2017-06-05 21:19来源:香港现场开奖 作者:www.wzatv.cc 点击:
src/是编写所有代码的位置。可运行的脚本都是直接写在 src/上的,类和实用程序写在了 codebase/上。下面我将详细说明一下(还有一个是脚本输出目录)。

src/是编写所有代码的位置。可运行的脚本都是直接写在 src/上的,类和实用程序写在了 codebase/上。下面我将详细说明一下(还有一个是脚本输出目录)。

编写代码

  

报码:实验研究工作流程详解:如何把你的机器学习想

我现在写所有代码的工具都是 Edward,我发现它是快速实验现代概率模型和算法的最佳框架。

Edward 链接:

在概念层面上,Edward 的吸引力在于语言遵循数学:模型的生成过程被转化为每行 Edward 代码;随后希望写出的算法被转化为下一行……这种纯净的转换过程免去了在未来试图将代码拓展为自然研究问题时的麻烦:例如,在之前使用了不同的方法,或者调整了梯度估值,或尝试了不同的神经网络架构,或是在大数据集中应用了其他方法等等。

在实践层面上,我总是从 Edward 的现有模型示例(在 edward/examples 或 edward/notebooks)中受益,我将预置算法源代码(在 edward/inferences)作为一个新文件粘贴到我的项目中的 codebase/目录中,然后进行调整。这样从零开始就变得非常简单了,我们也可以避免很多低级细节上的缺失。

在编写代码时,我一直遵循 PEP8(我特别喜欢 pep8 软件包:https://pypi.python.org/pypi/pep8),随后尝试从脚本共享的类和函数定义中分离每个脚本;前者被放在 codebase/中以备导入。从第一步开始维护代码质量总是最好的选择,这个过程非常重要,因为项目会随着时间不断膨胀,同时其他人也会逐渐加入。

Jupyter 记事本。许多人在使用 Jupyter 记事本(链接:)用作可交互式代码开发的方法,它也是嵌入可视化和 LaTeX 的简单方法。对于我来说,我并没有将它整合到自己的工作流中。我喜欢将自己所有的代码写入 Python 脚本中,然后运行脚本。但 Jupyter 等工具的交互性值得称赞。

实验管理

  

报码:实验研究工作流程详解:如何把你的机器学习想

在好的工作站或云服务商做投资是必要的事。GPU 这样的特性基本上普遍可用,而我们应该有权限并行运行许多工作。

我在本地计算机完成脚本编写之后,我主要的工作流是:

1. 运行 rsync 同步我本地计算机的 Github Repository(包含未授权文档)到服务器的 directory。

2. ssh 到服务器。

3. 开始 tmux 并运行脚本。众事驳杂,j2直播,tmux 能让你超脱此进程,从而不需要等待它的结束才与服务器再次交互。

在脚本可行之后,我开始用多个超参数配置钻研实验。这里有一个有帮助的工具 tf.flags,它使用命令行论证增强一个 Python 脚本,就像下面这样为你的脚本增加一些东西:

flags=tf.flagsflags.DEFINE_float('batch_size',128,'Minibatch during training')flags.DEFINE_float('lr',1e-5,'Learning rate step-size')FLAGS=flags.FLAGSbatch_size=FLAGS.batch_sizelr=FLAGS.lr

然后,你可以运行下面这样的终端命令:

python 1.py --batch_size=256 --lr=1e-4

这使得提交超参数更改的服务器任务变得容易。

最后,说到管理实验时输出的任务,回想一下前文中 src/目录的结构:

-- src/ -- checkpoints/ -- codebase/ -- log/ -- out/ -- 1.py -- 2.py

我们描述了每个脚本和 codebase/。其他三个目录被用于组织实验输出:

checkpoints/记录在训练中保存的模型参数。当算法每固定次数迭代时,使用 tf.train.Saver 来保存参数。这有助于维护长时间的实验——你可能会取消一些任务,后来又要恢复参数。每个实验的输出都会存储在 checkpoints/中的一个子目录下,如 20170524_192314_batch_size_25_lr_1e-4/。第一个数字是日期(YYYYMMDD),第二个是时间(HMS),其余的是超参数。

log/存储用于可视化学习的记录。每次实验都有属于自己的和 checkpoints/中对应的子目录。使用 Edward 的一个好处在于,对于日志,开奖,你可以简单地传递一个参数 inference.initialize(logdir='log/' + subdir)。被追踪的默认 TensorFlow 摘要可以用 TensorBoard 可视化。

out/记录训练结束后的探索性输出;例如生成的图片或 matplotlib 图,每个实验都有自己的和 checkpoints/中对应的子目录。

软件容器。virtualenv 是管理 Python 安装环境的必备软件,可以减少安装 Python 的困难程度。如果你需要更强大的工具,Docker containers 可以满足你的需要。

Virtualenv 链接:

Docker containers 链接:https://www.docker.com/

探索、调试和诊断

  

报码:实验研究工作流程详解:如何把你的机器学习想

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容