简介
最近在用tensorflow搞seq2seq,遇到了不少问题。首先就是tf.contrib.seq2seq
和tf.contrib.legacy_seq2seq
到底用哪个?查最新版api可以发现tf.contrib.legacy_seq2seq
已经被抛弃,这时你会想,选tf.contrib.seq2seq
不就好了。然而,悲剧的是github、csdn上的例子全是tf.contrib.legacy_seq2seq
的例子,而且运行 tensorflow/models下tf.contrib.legacy_seq2seq
的例子会报错can’t pickle _thread.lock objects。本着迎难而上的准则,开始探索tf.contrib.seq2seq
,顺便记录我踩过的坑。为了书写简单,在接下来的介绍中,若不加前缀,则默认指tf.contrib.seq2seq
,例如GreedyEmbeddingHelper
指tf.contrib.seq2seq.GreedyEmbeddingHelper
。
系统环境
>>> import sys
>>> import tensorflow as tf
>>> print(sys.version)
3.6.0 |Anaconda 4.3.1 (64-bit)| (default, Dec 23 2016, 12:22:00) \n[GCC 4.4.7 20120313 (Red Hat 4.4