提交 8e5c3a32 编写于 作者: W wizardforcel

2020-08-14 18:48:17

上级 8933e988
......@@ -142,7 +142,7 @@ An example of sequence models for NMT as seen in https://github.com/lmthang/thes
* RNN 可以具有一个嵌入层,该层将单词映射到一个嵌入空间中,在该空间中相似的单词恰好被映射得非常近。
* RNNs 可以使用简单的或者复发的细胞,或 LSTM,或窥视孔 LSTM,或越冬。
在考虑博士学位论文[神经机器翻译](https://github.com/lmthang/thesis/blob/master/thesis.pdf),我们可以使用嵌入层来映射 将输入语句放入嵌入空间。 然后,有两个 RNN *粘在一起*-源语言的编码器和目标语言的解码器。 如您所见,存在多个隐藏层,并且有两个流程:前馈垂直方向连接这些隐藏层,水平方向是将知识从上一步转移到下一层的递归部分:
然参考博士学位论文[神经机器翻译](https://github.com/lmthang/thesis/blob/master/thesis.pdf),我们可以使用嵌入层来映射 将输入语句放入嵌入空间。 然后,有两个 RNN *粘在一起*-源语言的编码器和目标语言的解码器。 如您所见,存在多个隐藏层,并且有两个流程:前馈垂直方向连接这些隐藏层,水平方向是将知识从上一步转移到下一层的递归部分:
![](img/45216119-cbfa-47f0-9080-b6256eefb995.png)
......@@ -152,7 +152,7 @@ An example of Neural machine translation as seen in https://github.com/lmthang/t
# 做好准备
NMT 可在 [https://github.com/tensorflow/nmt/](https://github.com/tensorflow/nmt/) 上找到,并且代码在 GitHub 上。
NMT 可在[这个页面](https://github.com/tensorflow/nmt/)上找到,并且代码在 GitHub 上。
# 怎么做...
......@@ -164,13 +164,13 @@ NMT 可在 [https://github.com/tensorflow/nmt/](https://github.com/tensorflow/nm
git clone https://github.com/tensorflow/nmt/
```
2. 下载训练数据集。 在这种情况下,我们将使用训练集将越南语翻译为英语。 其他数据集可从 [https://nlp.stanford.edu/projects/nmt/](https://nlp.stanford.edu/projects/nmt/) 获取其他语言,例如德语和捷克语:
2. 下载训练数据集。 在这种情况下,我们将使用训练集将越南语翻译为英语。 其他数据集可从[这里](https://nlp.stanford.edu/projects/nmt/)获取其他语言,例如德语和捷克语:
```py
nmt/scripts/download_iwslt15.sh /tmp/nmt_data
```
3. 考虑 [https://github.com/tensorflow/nmt/](https://github.com/tensorflow/nmt/) ,我们将定义第一个嵌入层。 嵌入层接受输入,词汇量 V 和输出嵌入空间的所需大小。 词汇量使得仅考虑 V 中最频繁的单词进行嵌入,而所有其他单词都映射到一个常见的*未知*术语。 在我们的例子中,输入是主要时间的,这意味着最大时间是第一个输入参数( [https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn](https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn)
3. 考虑[这里](https://github.com/tensorflow/nmt/),我们将定义第一个嵌入层。 嵌入层接受输入,词汇量 V 和输出嵌入空间的所需大小。 词汇量使得仅考虑 V 中最频繁的单词进行嵌入,而所有其他单词都映射到一个常见的*未知*术语。 在我们的例子中,输入是主要时间的,这意味着最大时间是[第一个输入参数](https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn)
```py
# Embedding
......@@ -183,7 +183,7 @@ nmt/scripts/download_iwslt15.sh /tmp/nmt_data
embedding_encoder, encoder_inputs)
```
4.在考虑 [https://github.com/tensorflow/nmt/](https://github.com/tensorflow/nmt/) ,我们定义了一个简单的编码器,它使用`tf.nn.rnn_cell.BasicLSTMCell(num_units)`作为基本 RNN 单元。 这非常简单,但是要注意,给定基本的 RNN 单元,我们使用`tf.nn.dynamic_rnn`(如[中指定的那样)创建 RNN:https://www.tensorflow.org/api_docs/python/tf/nn / dynamic_rnn](https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn) ):
4.然参考[这里](https://github.com/tensorflow/nmt/),我们定义了一个简单的编码器,它使用`tf.nn.rnn_cell.BasicLSTMCell(num_units)`作为基本 RNN 单元。 这非常简单,但是要注意,给定基本的 RNN 单元,我们使用`tf.nn.dynamic_rnn`(如[中指定的那样)创建 RNN:https://www.tensorflow.org/api_docs/python/tf/nn / dynamic_rnn](https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn) ):
```py
# Build RNN cell
......@@ -283,7 +283,7 @@ global step 9700 lr 1 step-time 1.52s wps 3.71K ppl 38.01 bleu 4.89
# 这个怎么运作...
所有上述代码已在 [https://github.com/tensorflow/nmt/blob/master/nmt/model.py](https://github.com/tensorflow/nmt/blob/master/nmt/model.py) 中定义。 关键思想是将两个 RNN *打包在一起*。 第一个是编码器,它在嵌入空间中工作,非常紧密地映射相似的单词。 编码器*理解*训练示例的含义,并产生张量作为输出。 然后只需将编码器的最后一个隐藏层连接到解码器的初始层,即可将该张量传递给解码器。 注意学习是由于我们基于基于与`labels=decoder_outputs`的交叉熵的损失函数而发生的。
所有上述代码已在[这个页面](https://github.com/tensorflow/nmt/blob/master/nmt/model.py)中定义。 关键思想是将两个 RNN *打包在一起*。 第一个是编码器,它在嵌入空间中工作,非常紧密地映射相似的单词。 编码器*理解*训练示例的含义,并产生张量作为输出。 然后只需将编码器的最后一个隐藏层连接到解码器的初始层,即可将该张量传递给解码器。 注意学习是由于我们基于基于与`labels=decoder_outputs`的交叉熵的损失函数而发生的。
该代码学习如何翻译,并通过 BLEU 度量标准通过迭代跟踪进度,如下图所示:
......@@ -431,8 +431,8 @@ An example of BLEU metrics with attention in Tensorboard
值得记住的是 seq2seq 不仅可以用于机器翻译。 让我们看一些例子:
* Lukasz Kaiser 在*作为外语的语法*[https://arxiv.org/abs/1412.7449](https://arxiv.org/abs/1412.7449)中,使用 seq2seq 模型来构建选区解析器。 选区分析树将文本分为多个子短语。 树中的非终结符是短语的类型,终结符是句子中的单词,并且边缘未标记。
* seq2seq 的另一个应用是 SyntaxNet,又名 Parsey McParserFace(语法分析器; [https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html](https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html) ),它是 许多 NLU 系统中的关键第一组件。 给定一个句子作为输入,它将使用描述单词的句法功能的**词性****POS**)标签标记每个单词,并确定单词中句法之间的句法关系 句子,在依存关系分析树中表示。 这些句法关系与所讨论句子的潜在含义直接相关。
* Lukasz Kaiser 在[作为外语的语法](https://arxiv.org/abs/1412.7449)中,使用 seq2seq 模型来构建选区解析器。 选区分析树将文本分为多个子短语。 树中的非终结符是短语的类型,终结符是句子中的单词,并且边缘未标记。
* seq2seq 的另一个应用是 SyntaxNet,又名 Parsey McParserFace([语法分析器](https://research.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html)),它是 许多 NLU 系统中的关键第一组件。 给定一个句子作为输入,它将使用描述单词的句法功能的**词性****POS**)标签标记每个单词,并确定单词中句法之间的句法关系 句子,在依存关系分析树中表示。 这些句法关系与所讨论句子的潜在含义直接相关。
下图使我们对该概念有了一个很好的了解:
......@@ -456,7 +456,7 @@ For the sake of simplicity, we will use the framework TFLearn ([http://tflearn.o
pip install -I tflearn
```
2. 导入许多有用的模块并下载一个由莎士比亚撰写的文本示例。 在这种情况下,我们使用 [https://raw.githubusercontent.com/tflearn/tflearn.github.io/master/resources/shakespeare_input.txt](https://raw.githubusercontent.com/tflearn/tflearn.github.io/master/resources/shakespeare_input.txt) 中提供的一种:
2. 导入许多有用的模块并下载一个由莎士比亚撰写的文本示例。 在这种情况下,我们使用[这个页面](https://raw.githubusercontent.com/tflearn/tflearn.github.io/master/resources/shakespeare_input.txt)中提供的一种:
```py
import os
......@@ -612,7 +612,7 @@ And the provest and stand,
# 还有更多...
博客文章*循环神经网络的不合理有效性*( [http://karpathy.github.io/2015/05/21/rnn-effectiveness/](http://karpathy.github.io/2015/05/21/rnn-effectiveness/) )描述了一组引人入胜的示例 RNN 字符级语言模型,包括以下内容:
博客文章[循环神经网络的不合理有效性](http://karpathy.github.io/2015/05/21/rnn-effectiveness/)描述了一组引人入胜的示例 RNN 字符级语言模型,包括以下内容:
* 莎士比亚文字生成类似于此示例
* Wikipedia 文本生成类似于此示例,但是基于不同的训练文本
......@@ -622,7 +622,7 @@ And the provest and stand,
# 学习使用 RNN 预测未来的比特币价值
在本食谱中,我们将学习如何使用 RNN 预测未来的比特币价值。 关键思想是,过去观察到的值的时间顺序可以很好地预测未来的值。 对于此食谱,我们将使用 MIT 许可下的 [https://github.com/guillaume-chevalier/seq2seq-signal-prediction](https://github.com/guillaume-chevalier/seq2seq-signal-prediction) 上提供的代码。 给定时间间隔的比特币值通过 API 从 [https://www.coindesk.com/api/](https://www.coindesk.com/api/) 下载。 这是 API 文档的一部分:
在本食谱中,我们将学习如何使用 RNN 预测未来的比特币价值。 关键思想是,过去观察到的值的时间顺序可以很好地预测未来的值。 对于此食谱,我们将使用 MIT 许可下的[这个页面](https://github.com/guillaume-chevalier/seq2seq-signal-prediction)上提供的代码。 给定时间间隔的比特币值通过 API 从[这里](https://www.coindesk.com/api/)下载。 这是 API 文档的一部分:
*We offer historical data from our Bitcoin Price Index through the following endpoint:* *https://api.coindesk.com/v1/bpi/historical/close.json* *By default, this will return the previous 31 days' worth of data. This endpoint accepts the following optional parameters:* *?index=[USD/CNY]The index to return data for. Defaults to USD.* *?currency=<VALUE>The currency to return the data in, specified in ISO 4217 format. Defaults to USD.* *?start=<VALUE>&end=<VALUE> Allows data to be returned for a specific date range. Must be listed as a pair of start and end parameters, with dates supplied in the YYYY-MM-DD format, e.g. 2013-09-01 for September 1st, 2013.* *?for=yesterday Specifying this will return a single value for the previous day. Overrides the start/end parameter.* *Sample Request:* [https://api.coindesk.com/v1/bpi/historical/close.json?start=2013-09-01&end=2013-09-05](https://api.coindesk.com/v1/bpi/historical/close.json?start=2013-09-01&end=2013-09-05) *Sample JSON Response:* {"bpi":{"2013-09-01":128.2597,"2013-09-02":127.3648,"2013-09-03":127.5915,"2013-09-04":120.5738,"2013-09-05":120.5333},"disclaimer":"This data was produced from the CoinDesk Bitcoin Price Index. BPI value data returned as USD.","time":{"updated":"Sep 6, 2013 00:03:00 UTC","updatedISO":"2013-09-06T00:03:00+00:00"}}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册