Hello tf-seq2seq [1]


seq2seq 是谷歌的一个机器翻译模型框架,通过深度神经网络模型将一个作为输入的序列映射为一个作为输出的序列。当然,其作用不止于翻译。

Hello tf-seq2seq 系列文章是官方文档的学习实践笔记,或者说是部分重点内容的翻译加个人注解(捂脸)。本文是第一篇,简单介绍环境和基本概念,边学边用边记,都是业余时间不定期更新。

官方文档
相关 Github 源码
版权声明:本文为 frendy 原创文章,可以随意转载,但请务必在明确位置注明出处。


先看看谷歌贴出的效果图吧:

image


环境准备


1. 下载 seq2seq 源码:
git clone https://github.com/google/seq2seq.git
2. 安装相关依赖包:
cd seq2seq
pip install -e .
3. 安装 tensorflow:
pip install tensorflow
4. 执行以下命令查看环境是否已经配置成功:
python -m unittest seq2seq.test.pipeline_test

a) 提示 ImportError: No module named _tkinter, please install the python-tk package,缺少 GUI 库

apt install python-tk

b) 提示 TclError: no display name and no $DISPLAY environment variable

echo "backend : Agg" >> $HOME/.config/matplotlib/matplotlibrc

出现 OK 说明一切准备就绪:

image


概念


1. Configuration - 配置:

使用 YAML 文件配置训练流程和模型,方便再现。官方例子如下,以键值对的形式设置:

model_params:
	attention.class: seq2seq.decoders.attention.AttentionLayerBahdanau
	attention.params:
		num_units: 512
	embedding.dim: 1024
	encoder.class: seq2seq.encoders.BidirectionalRNNEncoder
	encoder.params:
		rnn_cell:
			cell_class: LSTMCell
			cell_params:
				num_units: 512
2. Input Pipeline - 输入管道:

声明数据读取、解析、特征化、标签化的方法。

3. Encoder - 编码器

用于读取源数据,比如一个词序列或一张图像,然后进行编码,生成一个在连续空间中的特征表示。其中的思想是,由编码器所生成的特征可被解码器用来生成新数据,比如另一种语言的句子和图像的描述。

4. Decoder - 解码器

基于编码器所生成的特征的生成模型。比如一个 RNN(循环神经网络)解码器可以学习生成一个编码句子的另一种语言的表示。

5. Model - 模型

定义结合编码器和解码器的方式,以及计算和最小化损失函数的方式,也需要对从输入管道获取的数据进行必要的预处理。


欢迎来撩

frendy

It will shine for us...