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

报码:【让调参全部自动化】自动机器学习,神经网络(2)

时间:2017-07-09 07:25来源:118论坛 作者:www.wzatv.cc 点击:
AutoML 源自于这个想法:如果必须建立大量机器学习模型,使用各种算法和多个不同的超参数配置,那么这种模型构建的过程,还有比较模型的性能和精度

AutoML 源自于这个想法:如果必须建立大量机器学习模型,使用各种算法和多个不同的超参数配置,那么这种模型构建的过程,还有比较模型的性能和精度都能自动化。

简单吧?

报码:【让调参全部自动化】自动机器学习,神经网络

实践:训练一个能自动编程的神经网络

要求

Tensorflow + 基本的深度学习技巧

项目的 Github 库:https://github.com/thibo73800/deep_generation/tree/master/c_code

下文将快速回顾循环神经网络( RNN)相关要点,虽然不会把项目操作从头到尾过一遍,但会着重记述核心要点。花时间把每块代码都跑一边,能让你更好地理解整个逻辑。动手很关键。

好,我们这就开始吧!

数据集

做任何监督学习都需要一个训练数据集,我们这个网络也一样。项目的代码全部基于 C 语言(用太简单的语言就没意思了)。因此,我们的训练数据集将是 Github Linux 库里的 C 语言脚本。我已经预先提取了相关的 .c代码。

第一个问题:

神经网络只处理数字,其他信息都不知道。因此,数据集中的每个字符都需要表示成以下形式:

报码:【让调参全部自动化】自动机器学习,神经网络

由上图可见,字符 “=” 被分配给了数字 7。稍后我们会用热编码表示每个数字,这样能在反向传播的过程中更好地收敛。

报码:【让调参全部自动化】自动机器学习,神经网络

这里需要记住 3 个重要的变量:vocab_to_intint_to_vocabencoded。前两个让我们能够在字符和数字间自由转换,最后一个则是所有数据集的 encoder 格式。

第一个批次

先来生成一个简单的批次,含有两个序列,每个序列由 10 个数字组成。这个批次也将作为下面文章的样本。

报码:【让调参全部自动化】自动机器学习,神经网络

报码:【让调参全部自动化】自动机器学习,神经网络

这个批次看起来是这样的。也可以显示成:

好,现在我们有了需要处理的第一批值。我们的神经网络需要做的事情是,在知道已经输入的 n 个字符(而不是仅仅前一个字符)后,能够预测接下来要输入的字符是什么。比方说,如果我告诉网络,最后一个输入的字符是“e”,那么进化的可能有很多种。但是,如果我说最后的输入是“w”“h”“i”“l”和“e”,那么接下来要输入的字符是“(”就显而易见了。

因此,我们的神经网络必须要能考虑到字符类型的时空特征。

而为了实现这一点,我们需要用到一个循环神经网络。

循环神经网络

报码:【让调参全部自动化】自动机器学习,神经网络

为了说明最后一个例子,一个经典的分类器(上图的左边)接收前面的字母;这个字母会被传入隐藏层(用蓝色表示),网络会推导出一个输出。一个循环的神经网络在结构上是不同的。每个单元(用红色表示)不仅连接到输入,还与时刻t-1的单元相连。为了解决我们的问题,我们将使用 LSTM(长短时内存)单元。

开始建模!

报码:【让调参全部自动化】自动机器学习,神经网络

下面我们将详细介绍这篇文章的 5 个主要部分。占位符作为模型的一个 entry。LSTM 单元的初始化用于创建 RNN。

输出层与每个单元相连。相关运算用于测量模型的误差。最后,我们会定义训练的运算。

1)Graph 输入

报码:【让调参全部自动化】自动机器学习,神经网络

批次由两个大小为 10 的输入组成,因此我们输入的形状大小为 [2,10],这个批次的每个 entry 与单个输出相关联,可以将我们的目标也定义为相同的形状。最后,我们定义一个占位符,用于将来 dropout 概率的值。

2)LSTM 输出

报码:【让调参全部自动化】自动机器学习,神经网络

我们依次来看这段代码:

(责任编辑:本港台直播)

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容