提交 1b2d5a5f 编写于 作者: W wizardforcel

2020-12-22 14:19:44

上级 47c3c3ca
......@@ -130,7 +130,7 @@ tanh 激活功能输出的值在[ **-1** ,`1`]范围内,如下图所示:
# 整流线性单位(ReLU)
当神经元的总输入大于零时,ReLU 的输出为线性,而当神经元的总输入为负时,ReLU 的输出为零。 这个简单的激活函数为神经网络提供了非线性,同时,它相对于总输入提供了一个恒定的梯度。 这个恒定的梯度有助于防止神经网络出现饱和或消失的梯度问题,如激活功能(如 S 型和 tanh 激活单元)所示。 ReLU 函数输出(如图*图 1.8* 所示)可以表示如下:
当神经元的总输入大于零时,ReLU 的输出为线性,而当神经元的总输入为负时,ReLU 的输出为零。 这个简单的激活函数为神经网络提供了非线性,同时,它相对于总输入提供了一个恒定的梯度。 这个恒定的梯度有助于防止神经网络出现饱和或消失的梯度问题,如激活功能(如 S 型和 tanh 激活单元)所示。 ReLU 函数输出(如图“图 1.8”所示)可以表示如下:
![](img/f3c8b630-6ebc-4f71-903a-d192d27621f7.png)
......@@ -250,7 +250,7 @@ ReLU 的限制条件之一是其输入负值的零梯度。 这可能会减慢
第二卷积层可以检测到稍微复杂的特征,例如正方形,圆形和其他几何结构。 随着神经网络的发展,卷积层学会了检测越来越复杂的特征。 例如,如果我们有一个 CNN 可以对图像是猫还是狗进行分类,则神经网络底部的卷积层可能会学会检测诸如头部,腿部等特征。
*图 1.11* 显示了 CNN 的架构图,该 CNN 处理猫和狗的图像以对其进行分类。 图像通过卷积层,该卷积层有助于检测相关特征,例如边缘和颜色组合。 ReLU 激活会增加非线性。 激活层之后的合并层汇总本地邻居信息,以提供一定数量的**翻译不变性**。 在理想的 CNN 中,此卷积激活池操作在网络进入密集连接之前执行了几次:
“图 1.11”显示了 CNN 的架构图,该 CNN 处理猫和狗的图像以对其进行分类。 图像通过卷积层,该卷积层有助于检测相关特征,例如边缘和颜色组合。 ReLU 激活会增加非线性。 激活层之后的合并层汇总本地邻居信息,以提供一定数量的**翻译不变性**。 在理想的 CNN 中,此卷积激活池操作在网络进入密集连接之前执行了几次:
![](img/332c2f90-aae5-4b98-b417-ce942177e184.png)
......
......@@ -23,7 +23,7 @@
# 迁移学习简介
在传统的机器学习范例中(请参见*图 2.1* ),每个用例或任​​务都是根据手头的数据独立建模的。 在迁移学习中,我们使用从特定任务中获得的知识(以体系结构和模型参数的形式)来解决不同(但相关)的任务,如下图所示:
在传统的机器学习范例中(请参见“图 2.1”),每个用例或任​​务都是根据手头的数据独立建模的。 在迁移学习中,我们使用从特定任务中获得的知识(以体系结构和模型参数的形式)来解决不同(但相关)的任务,如下图所示:
![](img/07387bba-04ab-4758-9ac4-8740ea2f1bea.png)
......@@ -234,7 +234,7 @@ def get_im_cv2(path,dim=224):
![](img/f7892eff-50fc-4cf8-a629-271ad0cd18e3.png)
这里, *S <sub>v</sub>* 表示沿垂直方向的比例因子, *S <sub>h</sub>* 表示沿水平方向的比例因子(请参见 *图 2.6* 为插图)。 我们还可以选择通过具有非零转换向量`b`来跟随转换的缩放:
这里, *S <sub>v</sub>* 表示沿垂直方向的比例因子, *S <sub>h</sub>* 表示沿水平方向的比例因子(请参见 “图 2.6”为插图)。 我们还可以选择通过具有非零转换向量`b`来跟随转换的缩放:
![](img/3b758265-dbb1-48fb-a744-4a08fef9ce08.png)
......
......@@ -417,13 +417,13 @@ NMT 与其他传统方法相比的一些优点如下:
如前所述,编码器将通过 LSTM 处理源输入序列,并将源文本编码为有意义的摘要。 有意义的摘要将存储在最后的序列步骤中,即隐藏和单元状态 *h <sub>f</sub>**c <sub>f</sub>* 。 这些向量在一起(即 *[h <sub>f</sub> ; c <sub>f</sub> ]* )提供了有关源文本的有意义上下文,并且训练了解码器以产生其 具有隐藏和细胞状态向量的目标序列 *[h <sub>f</sub> ; c <sub>f</sub> ]*
下图所示*图 3.5* 是英语到法语翻译的训练过程的详细图。 英文句子*这是美好的一天*通过 LSTM 转换为含义摘要,然后存储在隐藏和单元格状态向量 *[h <sub>f</sub> 中; c <sub>f</sub> ]* 。 然后使解码器根据嵌入在 *[h <sub>f</sub> 中的信息,以输入源语句为条件,生成自己的目标序列; c <sub>f</sub> ]* 。 给定源句,使在时间步`t`的解码器预测下一个目标单词,即在时间步 *t +1* 的单词。 这就是为什么目标输入字和目标输出字之间有一个时间步长的滞后的原因。 对于第一步,解码器在目标文本序列中没有任何先前的单词,因此可用于预测目标单词的唯一信息是以 *[h <sub>f</sub> ; c <sub>f</sub> ]* ,作为初始隐藏和单元状态向量提供。 像编码器一样,解码器也使用 LSTM,并且如上所述,输出目标序列比输入目标序列提前一个时间步长:
下图所示“图 3.5”是英语到法语翻译的训练过程的详细图。 英文句子*这是美好的一天*通过 LSTM 转换为含义摘要,然后存储在隐藏和单元格状态向量 *[h <sub>f</sub> 中; c <sub>f</sub> ]* 。 然后使解码器根据嵌入在 *[h <sub>f</sub> 中的信息,以输入源语句为条件,生成自己的目标序列; c <sub>f</sub> ]* 。 给定源句,使在时间步`t`的解码器预测下一个目标单词,即在时间步 *t +1* 的单词。 这就是为什么目标输入字和目标输出字之间有一个时间步长的滞后的原因。 对于第一步,解码器在目标文本序列中没有任何先前的单词,因此可用于预测目标单词的唯一信息是以 *[h <sub>f</sub> ; c <sub>f</sub> ]* ,作为初始隐藏和单元状态向量提供。 像编码器一样,解码器也使用 LSTM,并且如上所述,输出目标序列比输入目标序列提前一个时间步长:
![](img/421b234c-10f6-4cbe-9233-97a33233b2ca.png)
图 3.5:训练时机器翻译网络流程的图示
我们基于*图 3.5* 中所示的架构,定义了用于训练功能`model_enc_dec`的编码器解码器端到端模型。 在这里,**编码器(LSTM 1)**依次获取源语言文本单词,并在**编码器(LSTM 1)的最后序列步骤中捕获源语言句子或文本的整个上下文。** 。 来自编码器的上下文将作为**解码器(** **LSTM 2)**的初始状态进行馈送,该学习器将根据当前单词来预测下一个单词,因为在训练过程中我们会得到一个句子 / text 作为目标语言,因此解码器只需将其输入移位一个时间步即可形成目标:
我们基于“图 3.5”中所示的架构,定义了用于训练功能`model_enc_dec`的编码器解码器端到端模型。 在这里,**编码器(LSTM 1)**依次获取源语言文本单词,并在**编码器(LSTM 1)的最后序列步骤中捕获源语言句子或文本的整个上下文。** 。 来自编码器的上下文将作为**解码器(** **LSTM 2)**的初始状态进行馈送,该学习器将根据当前单词来预测下一个单词,因为在训练过程中我们会得到一个句子 / text 作为目标语言,因此解码器只需将其输入移位一个时间步即可形成目标:
```py
def model_enc_dec(self):
......
......@@ -31,7 +31,7 @@
视频减去音频后,可以认为是按顺序排列的图像集合。 可以使用针对特定图像分类问题训练的卷积神经网络(例如 **ImageNet**)从这些图像中提取重要特征。 预训练网络的最后一个完全连接层的激活可用于从视频的顺序采样图像中得出特征。 从视频顺序采样图像的频率速率取决于视频中内容的类型,可以通过训练进行优化。
下图(*图 5.1* )说明了用于从视频中提取特征的预训练神经网络:
下图(“图 5.1”)说明了用于从视频中提取特征的预训练神经网络:
![](img/079370cc-0b47-4578-bf5e-3fceaaba687f.png)
......@@ -39,7 +39,7 @@
从上图可以看出,从视频中顺序采样的图像经过预训练的卷积神经网络,并且最后一个完全连接层中的 **`4,096`** 单元的激活为 输出。 如果将`t`时的视频图像表示为 *x <sub>t</sub>* ,并且最后一个完全连接层的输出表示为 *f <sub>t</sub> ∈R <sup>4096</sup>* ,然后 *f <sub>t =</sub> f <sub>w</sub> (x <sub>t</sub> )* [ <sub></sub> 此处,`W`表示直到最后一个完全连接层的卷积神经网络的权重。
这些系列的输出功能 *f <sub>1,</sub> f <sub>2,...。 。 。 。 。</sub> f <sub>t。 。 。</sub> f <sub>N</sub>* 可以作为递归神经网络的输入,该神经网络学习根据输入特征生成文本标题,如下图所示(*图 5.2* ]):
这些系列的输出功能 *f <sub>1,</sub> f <sub>2,...。 。 。 。 。</sub> f <sub>t。 。 。</sub> f <sub>N</sub>* 可以作为递归神经网络的输入,该神经网络学习根据输入特征生成文本标题,如下图所示(“图 5.2”]):
![](img/c4301074-d0a6-499d-97fb-04b39f20d188.png)
......@@ -55,7 +55,7 @@
序列到序列的体系结构基于 Subhashini Venugopalan,Marcus Rohrbach,Jeff Donahue,Raymond Mooney,Trevor Darrell 和 Kate Saenko 撰写的名为《序列到序列-视频到文本》的论文。 该论文可以在[这个页面](https://arxiv.org/pdf/1505.00487.pdf)中找到。
在下图(*图 5.3* )中,说明了基于先前论文的*序列到字幕视频字幕*神经网络架构:
在下图(“图 5.3”)中,说明了基于先前论文的*序列到字幕视频字幕*神经网络架构:
![](img/6dac330d-1814-4543-8312-a3b863240d00.png)
......@@ -69,7 +69,7 @@
*(N + 1)*时间步长处,馈送到第二 LSTM 的单词 *w <sub>N</sub>* 是由`<bos>`表示的句子的开头。 一旦生成句子符号`<eos>`的结尾,就训练网络停止生成标题词。 总而言之,两个 LSTM 的设置方式是,一旦它们处理完所有视频图像帧特征 *![](img/8ad769e2-57c1-4581-98e1-7c7f70a12413.png)* ,它们便开始产生文本标题词。
处理时间步 *t > N* 的第二个 LSTM 输入的另一种方法是只喂 *[w <sub>t-1</sub> ]* 而不是 HTG6] [h <sub>t</sub> ,w <sub>t-1</sub> ] ,并在时间步`T`传递第一个 LSTM 的隐藏状态和单元状态。 *[h <sub>T</sub> ,c <sub>T</sub> ]* 到第二个 LSTM 的初始隐藏和细胞状态。 这样的视频字幕网络的体系结构可以说明如下(请参见*图 5.4* ):
处理时间步 *t > N* 的第二个 LSTM 输入的另一种方法是只喂 *[w <sub>t-1</sub> ]* 而不是 HTG6] [h <sub>t</sub> ,w <sub>t-1</sub> ] ,并在时间步`T`传递第一个 LSTM 的隐藏状态和单元状态。 *[h <sub>T</sub> ,c <sub>T</sub> ]* 到第二个 LSTM 的初始隐藏和细胞状态。 这样的视频字幕网络的体系结构可以说明如下(请参见“图 5.4”):
![](img/f2805f4e-f512-4272-8988-4c3b2b73a400.png)
......@@ -85,7 +85,7 @@
我们通过在`MSVD dataset`上训练模型来构建视频字幕系统,该模型是 Microsoft 的带预字幕的 YouTube 视频存储库。 [可以从以下链接下载所需的数据](http://www.cs.utexas.edu/users/ml/clamp/videoDescription/YouTubeClips.tar)[可通过以下链接获得视频的文本标题](https://github.com/jazzsaxmafia/video_to_sequence/files/387979/video_corpus.csv.zip)
`MSVD dataset`中大约有`1,938`个视频。 我们将使用它们来训练*逐序列视频字幕系统*。 还要注意,我们将在*图 5.3* 中所示的序列到序列模型上构建模型。 但是,建议读者尝试在*图 5.4* 中介绍的体系结构上训练模型,并了解其表现。
`MSVD dataset`中大约有`1,938`个视频。 我们将使用它们来训练*逐序列视频字幕系统*。 还要注意,我们将在“图 5.3”中所示的序列到序列模型上构建模型。 但是,建议读者尝试在“图 5.4”中介绍的体系结构上训练模型,并了解其表现。
# 处理视频图像以创建 CNN 功能
......@@ -202,7 +202,7 @@ Processing video /media/santanu/9eb9b6dc-b380-486e-b4fd-c424a325b976/Video Capti
# 处理带标签的视频字幕
`corpus.csv`文件以文本标题的形式包含视频的描述(请参见*图 5.5* )。 以下屏幕快照显示了数据片段。 我们可以删除一些`[VideoID,Start,End]`组合记录,并将它们视为测试文件,以便稍后进行评估:
`corpus.csv`文件以文本标题的形式包含视频的描述(请参见“图 5.5”)。 以下屏幕快照显示了数据片段。 我们可以删除一些`[VideoID,Start,End]`组合记录,并将它们视为测试文件,以便稍后进行评估:
![](img/a78d11a7-39d3-4e85-9bc8-768d81b7ee8c.png)
......@@ -233,7 +233,7 @@ def get_clean_caption_data(self,text_path,feat_path):
在已定义的`get_data`函数中,我们从`video_corpus.csv`文件中删除了所有非英语的字幕。 完成后,我们首先通过构建视频名称(作为`VideoID``Start``End`功能的串联)并在功能目录名称前添加前缀来形成视频功能的链接。 然后,我们删除所有未指向 features 目录中任何实际视频特征向量或具有无效非文本描述的视频语料库文件记录。
数据如下图所示输出(*图 5.6* ):
数据如下图所示输出(“图 5.6”):
![](img/c08fc9df-4002-49ca-80f3-f9118e0055b1.png)
......@@ -684,13 +684,13 @@ Epoch 99 is done. Saving the model ...
我们可以看到,使用 GeForce Zotac 1070 GPU 在 100 个时间段上训练模型大约需要 24 分钟。
每个时期的训练损失减少表示如下(*图 5.7* ):
每个时期的训练损失减少表示如下(“图 5.7”):
![](img/350a0f8a-c04a-409d-835e-4a0c1448b630.png)
图 5.7 训练期间的损失概况
从前面的图表(*图 5.7* )可以看出,损耗减少在最初的几个时期中较高,然后在时期`80`处逐渐减小。 在下一节中,我们将说明该模型在为看不见的视频生成字幕时的性能。
从前面的图表(“图 5.7”)可以看出,损耗减少在最初的几个时期中较高,然后在时期`80`处逐渐减小。 在下一节中,我们将说明该模型在为看不见的视频生成字幕时的性能。
# 用看不见的测试视频推断
......
......@@ -28,7 +28,7 @@
图 6.1:基于内容的过滤插图
如上图所示(*图 6.1* ),**用户 A** 购买了名为**深度学习****神经网络**的书籍。 由于书籍**人工智能**的内容与这两本书相似,因此基于内容的推荐系统已将书籍**人工智能**推荐给**用户 A** 。 如我们所见,在基于内容的筛选中,根据用户的偏好向用户推荐项目。 这不涉及其他用户如何评价这本书。
如上图所示(“图 6.1”),**用户 A** 购买了名为**深度学习****神经网络**的书籍。 由于书籍**人工智能**的内容与这两本书相似,因此基于内容的推荐系统已将书籍**人工智能**推荐给**用户 A** 。 如我们所见,在基于内容的筛选中,根据用户的偏好向用户推荐项目。 这不涉及其他用户如何评价这本书。
**协作过滤**尝试识别属于给定用户的相似用户,然后推荐相似用户喜欢,购买或给予很高评价的用户项目。 这通常称为**用户-用户协作过滤**。 相反的是找到与给定项目相似的项目,并向也高度喜欢,购买或评价其他类似项目的用户推荐这些项目。 这就是**项目-项目协作过滤**的名称:
......@@ -36,7 +36,7 @@
图 6.2:项目-项目协同过滤插图
在上图(*图 6.2* )中,**用户 A****用户 B** 在购买书本方面非常相似。 **用户 A** 最近购买了书籍**深度学习****神经网络**。 由于**用户 B****用户 A** 非常相似,因此用户-用户协作推荐系统也将这些图书推荐给**用户 B**
在上图(“图 6.2”)中,**用户 A****用户 B** 在购买书本方面非常相似。 **用户 A** 最近购买了书籍**深度学习****神经网络**。 由于**用户 B****用户 A** 非常相似,因此用户-用户协作推荐系统也将这些图书推荐给**用户 B**
# 基于潜在分解的推荐系统
......@@ -46,7 +46,7 @@
图 6.3:基于潜在因子的过滤图
上图(*图 6.3* )中说明了一种基于潜在因子的推荐方法,其中评级矩阵 *R <sub>mxn</sub>* 已分解为用户产品 配置文件矩阵 *U <sub>mxk</sub>* 和项目配置文件矩阵 *P <sub>nxk</sub>* 的转置,其中`k`是 模型的潜在因素。 基于这些配置文件,我们可以通过计算用户配置文件和项目配置文件的内部产品来推荐用户迄今为止尚未购买的项目。 内部产品给出了用户购买该产品时可能给出的暂定等级。
上图(“图 6.3”)中说明了一种基于潜在因子的推荐方法,其中评级矩阵 *R <sub>mxn</sub>* 已分解为用户产品 配置文件矩阵 *U <sub>mxk</sub>* 和项目配置文件矩阵 *P <sub>nxk</sub>* 的转置,其中`k`是 模型的潜在因素。 基于这些配置文件,我们可以通过计算用户配置文件和项目配置文件的内部产品来推荐用户迄今为止尚未购买的项目。 内部产品给出了用户购买该产品时可能给出的暂定等级。
创建这些用户和商品资料的一种方法是,在以某种形式的平均值填充缺失值之后,对评分矩阵执行**奇异值分解****SVD**) 用户和项目(视情况而定)。 根据 SVD,评级矩阵`R`可以分解如下:
......@@ -204,7 +204,7 @@ Hold out test set RMSE: 0.9543926404313371
test_ratings_df[test_ratings_df['userID'] == 1].sort_values(['rating','predictions'],ascending=False)
```
从以下结果(*图 6.5* )可以看出,该模型在预测训练期间看不到的电影的收视率方面做得很好:
从以下结果(“图 6.5”)可以看出,该模型在预测训练期间看不到的电影的收视率方面做得很好:
![](img/9d4768be-e18c-43cf-85d0-a9a80c3bfbc1.png)
......@@ -317,7 +317,7 @@ RMSE: 0.9320
图 6.6:用于二进制数据的受限 Boltzmann 机器
只是为了刷新我们的记忆,上图(*图 6.6* )是一个 RBM,具有`m`输入或可见单位。 这被投影到具有`n`个单位的隐藏层。 给定可见层输入[H​​TG6],则隐藏单元彼此独立,因此可以如下进行采样,其中![](img/71f41038-5216-48cd-9474-3d36fd1c8758.png)表示 Sigmoid 函数:
只是为了刷新我们的记忆,上图(“图 6.6”)是一个 RBM,具有`m`输入或可见单位。 这被投影到具有`n`个单位的隐藏层。 给定可见层输入[H​​TG6],则隐藏单元彼此独立,因此可以如下进行采样,其中![](img/71f41038-5216-48cd-9474-3d36fd1c8758.png)表示 Sigmoid 函数:
![](img/e4c4d443-0ad5-4a56-a6ac-73c05bcca858.png)
......@@ -353,9 +353,9 @@ RBM 的参数是可见层单位`i`与隐藏层单位之间的广义权重连接
图 6.7:对比散度图
如上图所示(*图 6.7* ),我们从可见的输入 *v <sup>(t)</sup>* 开始,并对隐藏层进行采样 根据条件概率分布 *P(h / v = v <sup>(t)</sup>)*激活![](img/f6ddc0c8-b917-44aa-a6c8-dadd737358ab.png)。 再次,使用条件概率分布 *P(v / h = h <sup>'</sup>)*,我们对 *v <sup>'</sup>* 进行采样。 根据条件概率分布 *P(h / v = v <sup>'</sup>)*对隐藏单元的下一次采样给出![](img/2f29e0d4-e0c2-4c48-aa9f-9f3b52890d1b.png),然后使用![](img/af67a34a-3350-44c1-b5f8-9bb47f2c265a.png)对可见单元激活进行采样 给我们![](img/71ba3b2e-6fa9-482f-b01d-a3bd8bdac420.png)。 对于`v``h`,即![](img/a13d0854-7fa0-4a6f-a01b-d277a377c7eb.png)的整个联合概率分布,将样本![](img/bbe647d9-d45c-448f-8169-04ef6cc6a007.png)取为代表性样本。 相同的用于计算包含`v``h`的任何表达式的期望。 这种采样过程称为对比散度。
如上图所示(“图 6.7”),我们从可见的输入 *v <sup>(t)</sup>* 开始,并对隐藏层进行采样 根据条件概率分布 *P(h / v = v <sup>(t)</sup>)*激活![](img/f6ddc0c8-b917-44aa-a6c8-dadd737358ab.png)。 再次,使用条件概率分布 *P(v / h = h <sup>'</sup>)*,我们对 *v <sup>'</sup>* 进行采样。 根据条件概率分布 *P(h / v = v <sup>'</sup>)*对隐藏单元的下一次采样给出![](img/2f29e0d4-e0c2-4c48-aa9f-9f3b52890d1b.png),然后使用![](img/af67a34a-3350-44c1-b5f8-9bb47f2c265a.png)对可见单元激活进行采样 给我们![](img/71ba3b2e-6fa9-482f-b01d-a3bd8bdac420.png)。 对于`v``h`,即![](img/a13d0854-7fa0-4a6f-a01b-d277a377c7eb.png)的整个联合概率分布,将样本![](img/bbe647d9-d45c-448f-8169-04ef6cc6a007.png)取为代表性样本。 相同的用于计算包含`v``h`的任何表达式的期望。 这种采样过程称为对比散度。
从可见输入开始,然后从条件分布 *P(v / h)**P(v / h)*连续采样构成吉布斯采样的一个步骤,并为我们提供了一个样本[ 联合发行中的*(v / h)*。 代替在 Gibbs 采样的每个步骤中选择样本*(v / h)*,我们可以选择从条件概率分布中进行几次连续的采样迭代后再选择样本。 如果在吉布斯采样的`k`个步骤之后,选择了代表元素,则将对比散度称为 *CD-k* 。 *图 6.7* 中所示的对比散度可以称为 *CD-2,*,因为我们是在经过两步 Gibbs 采样后才选择样本的。
从可见输入开始,然后从条件分布 *P(v / h)**P(v / h)*连续采样构成吉布斯采样的一个步骤,并为我们提供了一个样本[ 联合发行中的*(v / h)*。 代替在 Gibbs 采样的每个步骤中选择样本*(v / h)*,我们可以选择从条件概率分布中进行几次连续的采样迭代后再选择样本。 如果在吉布斯采样的`k`个步骤之后,选择了代表元素,则将对比散度称为 *CD-k* 。 “图 6.7”中所示的对比散度可以称为 *CD-2,*,因为我们是在经过两步 Gibbs 采样后才选择样本的。
# 使用 RBM 的协同过滤
......@@ -701,13 +701,13 @@ test RMSE : 1.1999306704742303
458.058 ms: process RBM
```
我们从`test_results.csv`观察`userid 1`的推断结果,如下所示(请参见*图 6.9* ):
我们从`test_results.csv`观察`userid 1`的推断结果,如下所示(请参见“图 6.9”):
![](img/99f2041e-3c09-4503-b01b-c15bcdd1f6b3.png)
图 6.9:用户 ID 1 的保留数据验证结果
从前面的屏幕快照(*图 6.9* )中的预测可以看出,RBM 在预测`userid` `1`的电影的保留集方面做得很好。
从前面的屏幕快照(“图 6.9”)中的预测可以看出,RBM 在预测`userid` `1`的电影的保留集方面做得很好。
建议您将最终收视率预测作为对每个电影收视率预测的多项式概率分布的收视率的期望值,并与采用最高收视率的方法进行比较,了解其效果如何 多项式分布的概率。 可以在[这个页面](https://www.cs.toronto.edu/~rsalakhu/papers/rbmcf.pdf)上找到用于协作过滤的 RBM 论文。受限 Boltzmann 机器有关的代码位于[这里](https://github.com/PacktPublishing/Intelligent-Projects-using-Python/blob/master/Chapter06/rbm.py)
......
......@@ -51,7 +51,7 @@
4. 将 TensorFlow 训练有素的模型 protobuf 对象及其相关的依赖项集成到项目内的 Assets 文件夹中。
5. 生成项目并运行它。
下图说明了此 Android 应用的实现(*图 7.2* ):
下图说明了此 Android 应用的实现(“图 7.2”):
![](img/28904c06-b8aa-49ab-be57-95d06788ef97.png)
......@@ -469,7 +469,7 @@ Using TensorFlow backend.
# 应用界面页面设计
可以使用 Android Studio 设计一个简单的移动应用程序界面,并将相关代码生成为 XML 文件。 正如您在以下屏幕截图(*图 7.3* )中所看到的那样,该应用程序包含一个简单的电影评论文本框,用户可以在其中输入他们的电影评论,并在完成后按 SUBMIT 按钮。 按下 SUBMIT 按钮后,评论将传递到核心应用逻辑,该逻辑将处理电影评论文本并将其传递给 TensorFlow 优化模型进行推理。
可以使用 Android Studio 设计一个简单的移动应用程序界面,并将相关代码生成为 XML 文件。 正如您在以下屏幕截图(“图 7.3”)中所看到的那样,该应用程序包含一个简单的电影评论文本框,用户可以在其中输入他们的电影评论,并在完成后按 SUBMIT 按钮。 按下 SUBMIT 按钮后,评论将传递到核心应用逻辑,该逻辑将处理电影评论文本并将其传递给 TensorFlow 优化模型进行推理。
作为推理的一部分,将计算情感得分,该得分将显示在移动应用上,并同时以星级评分的形式展示:
......@@ -744,7 +744,7 @@ org.tensorflow:tensorflow-android:1.7.0
*“阿凡达》不仅是一种令人震撼的娱乐活动,而且还是一项技术突破。它具有鲜明的绿色和反战信息。它注定要发动一场邪教。它包含如此直观的细节, 像《指环王》一样,它发明了一种新的语言 Na'vi,尽管我很仁慈地怀疑这种语言可以被人类甚至青少年使用,它创造了新的电影明星。 在那些电影中,您觉得必须跟上对话的步伐。”*
审阅者给电影评分为 4/5,而移动应用的评分为 4.8 / 5,如以下屏幕截图所示(*图 7.4* ):
审阅者给电影评分为 4/5,而移动应用的评分为 4.8 / 5,如以下屏幕截图所示(“图 7.4”):
![](img/edef4e5f-45e7-40d0-8e72-9d9f44e37b38.png)
......@@ -754,7 +754,7 @@ org.tensorflow:tensorflow-android:1.7.0
*“星际大片代表了导演兼导演克里斯托弗·诺兰(Christopher Nolan)所期待的更多激动人心,发人深省,视觉上灿烂的电影制作人,即使其知识渊博超出了人们的理解范围。”*
该影片在*烂番茄*上的平均评分为 7/10,如果将其缩放为 5,则得分为 3.5 / 5,而移动应用预测的评分为 3.37,如下图所示 屏幕截图(*图 7.5* ):
该影片在*烂番茄*上的平均评分为 7/10,如果将其缩放为 5,则得分为 3.5 / 5,而移动应用预测的评分为 3.37,如下图所示 屏幕截图(“图 7.5”):
![](img/e35227a8-c487-43ee-934b-08186678ae3a.png)
......
......@@ -18,7 +18,7 @@
* 会话聊天机器人
* 与客户协商价格并参与投标
很多时候,企业很难确定是否需要聊天机器人。 企业是否需要聊天机器人可以通过*图 8.1* 中的流程图确定:
很多时候,企业很难确定是否需要聊天机器人。 企业是否需要聊天机器人可以通过“图 8.1”中的流程图确定:
![](img/aeb9840d-65f5-4676-89a3-63a554915107.png)
......@@ -51,13 +51,13 @@
# 使用 LSTM 的序列到序列模型
序列到序列模型体系结构非常适合捕获客户输入的上下文,然后基于该上下文生成适当的响应。 *图 8.2* 显示了一个序列到序列模型框架,该框架可以像聊天机器人那样回答问题:
序列到序列模型体系结构非常适合捕获客户输入的上下文,然后基于该上下文生成适当的响应。 “图 8.2”显示了一个序列到序列模型框架,该框架可以像聊天机器人那样回答问题:
![](img/a9129778-213f-4d7d-8f07-04e7c50b78e9.png)
图 8.2:使用 LSTM 的序列到序列模型
从上图(*图 8.2* )中可以看出,**编码器 LSTM** 接受单词的输入序列,并将其编码为隐藏状态向量![](img/d6601a00-aee8-4b56-9f4f-a1d74a31845c.png)和单元状态 向量![](img/6d00aab9-ba58-44cc-8d6f-dffeffeb21d3.png)。 向量![](img/5efc3fa3-dba4-408d-9c1b-a5fe3bf7e9a3.png)和![](img/6dba45e9-875c-4637-9653-dd2925f0b69d.png)是 LSTM 编码器最后一步的隐藏状态和单元状态。 它们本质上将捕获整个输入句子的上下文。
从上图(“图 8.2”)中可以看出,**编码器 LSTM** 接受单词的输入序列,并将其编码为隐藏状态向量![](img/d6601a00-aee8-4b56-9f4f-a1d74a31845c.png)和单元状态 向量![](img/6d00aab9-ba58-44cc-8d6f-dffeffeb21d3.png)。 向量![](img/5efc3fa3-dba4-408d-9c1b-a5fe3bf7e9a3.png)和![](img/6dba45e9-875c-4637-9653-dd2925f0b69d.png)是 LSTM 编码器最后一步的隐藏状态和单元状态。 它们本质上将捕获整个输入句子的上下文。
然后,以![](img/35169e57-0797-4240-b4ce-2b9187aadfde.png)和![](img/2e6449ad-2e66-47ee-9242-c23ffda15fbb.png)形式的编码信息作为其初始隐藏状态和单元状态被馈送到**解码器 LSTM** 。 每个步骤中的**解码器 LSTM** 尝试预测以当前单词为条件的下一个单词。 这意味着,**解码器 LSTM** 的每个步骤的输入都是当前字。
......@@ -67,7 +67,7 @@
# 建立序列到序列模型
我们将用于构建聊天机器人的序列到序列模型的体系结构将对先前在*图 8.2 中说明的基本序列到序列体系结构进行一些修改。* 修改后的架构可以在下图中看到(*图 8.3* ):
我们将用于构建聊天机器人的序列到序列模型的体系结构将对先前在*图 8.2 中说明的基本序列到序列体系结构进行一些修改。* 修改后的架构可以在下图中看到(“图 8.3”):
![](img/e3a27c9d-19a4-4b77-a737-ef6ae8dec474.png)
......
......@@ -2,7 +2,7 @@
在过去的几年中,增强学习已经真正兴起,在增强学习中,代理通过与环境的交互来学习决策。 这是当今人工智能和机器学习中最热门的主题之一,并且这一领域的研究正在快速发展。 在**强化学习****RL**)中,代理将他们的行动和经验转化为学习,以便将来做出更好的决策。
增强学习不属于有监督或无监督的机器学习范式,因为它本身就是一个领域。 在监督学习中,我们尝试学习一个映射 *F:X→Y* ,将输入`X`映射到输出`Y`,而在强化学习中,主体学习 通过反复试验采取最佳行动。 当业务代表执行任务出色时,将分配奖励,而当业务代表执行不好时,则要支付罚款。 代理试图吸收这些信息,并学会在类似的情况下不重复这些错误。 代理人所处的这些条件称为状态。 *图 9.1* 显示了强化学习框架中环境中代理的交互作用:
增强学习不属于有监督或无监督的机器学习范式,因为它本身就是一个领域。 在监督学习中,我们尝试学习一个映射 *F:X→Y* ,将输入`X`映射到输出`Y`,而在强化学习中,主体学习 通过反复试验采取最佳行动。 当业务代表执行任务出色时,将分配奖励,而当业务代表执行不好时,则要支付罚款。 代理试图吸收这些信息,并学会在类似的情况下不重复这些错误。 代理人所处的这些条件称为状态。 “图 9.1”显示了强化学习框架中环境中代理的交互作用:
![](img/9d2d1715-a781-4b00-9312-09d3cd27cc1b.png)
......
......@@ -54,7 +54,7 @@ plt.imshow(image)
```
以下屏幕截图(*图 10.2* )是上述代码生成的随机验证码:
以下屏幕截图(“图 10.2”)是上述代码生成的随机验证码:
![](img/45c18be8-a3cf-4aed-8ff8-3ba5aca71d2b.png)
......@@ -159,7 +159,7 @@ def _model_(n_classes):
```
可以如下图所示图示 CAPTCHA 断路器 CNN 模型(*图 10.3* ):
可以如下图所示图示 CAPTCHA 断路器 CNN 模型(“图 10.3”):
![](img/608c6914-e403-4e73-80a5-15da7deb8b53.png)
......@@ -376,7 +376,7 @@ Evaluation file written at: /home/santanu/ML_DS_Catalog-/captcha/evaluation.csv
我们还可以看到,对那些`4000` CAPTCHA 的推断花费了大约 14 秒,并且评估的输出写入了`/home/santanu/ML_DS_Catalog-/captcha/evaluation.csv`文件中。
在下面的屏幕快照中,我们将查看一些模型做得不好的目标和预测(*图 10.4* ):
在下面的屏幕快照中,我们将查看一些模型做得不好的目标和预测(“图 10.4”):
![](img/df4e5a48-62ed-43ba-9f81-dc72fe8ca5b8.png)
......@@ -464,7 +464,7 @@ def generator(input_dim,alpha=0.2):
```
下图(*图 10.5* )中描述了生成器的网络架构,以供参考:
下图(“图 10.5”)中描述了生成器的网络架构,以供参考:
![](img/bcfebdf8-f4ff-46c4-aa47-050aea483200.png)
......@@ -499,7 +499,7 @@ def discriminator(img_dim,alpha=0.2):
在上一个代码块中定义的鉴别器网络将伪造的生成器图像和真实的 SVHN 图像作为输入,并将它们传递到最终输出层之前的`3` 2D 卷积集。 在该网络中的卷积之后没有合并,而是通过批处理规范化和`LeakyReLU`激活。
下图显示了鉴别器的网络架构(*图 10.6* ):
下图显示了鉴别器的网络架构(“图 10.6”):
![](img/d9f295fb-a738-4f31-9381-013e88de5d27.png)
......@@ -710,7 +710,7 @@ def generate_captcha(gen_input_dim,alpha,
python captcha_gan.py generate-captcha --gen_input_dim 100 --num_images 200 --model_dir '/home/santanu/ML_DS_Catalog-/captcha/' --outdir '/home/santanu/ML_DS_Catalog-/captcha/captcha_for_use/' --alpha 0.2
```
以下屏幕截图(*图 10.8* )描述了通过调用`generate_captcha`函数生成的一些验证码。 我们可以看到图像足够不错,可以用作验证码:
以下屏幕截图(“图 10.8”)描述了通过调用`generate_captcha`函数生成的一些验证码。 我们可以看到图像足够不错,可以用作验证码:
![](img/fbb03db6-29e8-4cdc-8c24-883b57a03576.png)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册