如何运行TensorFlow Seq2Seq演示

5
我已经安装了TensorFlow并成功地完成了MNIST演示。现在,我正在尝试运行seq2seq演示,但是这对我来说不起作用。
我克隆了他们的Github库的一个版本,并尝试从库根目录中运行一些列出的命令。
$ bazel run -c opt ./tensorflow/models/rnn/translate/translate.py 
    ERROR: Bad target pattern './tensorflow/models/rnn/translate/translate.py': package names may contain only A-Z, a-z, 0-9, '/', '-' and '_'.
    INFO: Elapsed time: 0.115s
    ERROR: Build failed. Not running target.

这并不奇怪,因为bazel执行python脚本并不是很合理。

在教程的后面,

$ bazel run -c opt //tensorflow/models/rnn/translate:translate \
  --data_dir ./data_dir --train_dir ./checkpoints_directory \
  --en_vocab_size=40000 --fr_vocab_size=40000

Unrecognized option: --data_dir

如果我从上面的调用中删除参数,它将尝试(并失败)在执行translate之前构建整个TensorFlow项目。这不是我想要的,因为我已经成功地使用pip安装了TensorFlow。

我最后尝试运行的命令是:

$ python ./tensorflow/models/rnn/translate/translate.py 
Traceback (most recent call last):
  File "./tensorflow/models/rnn/translate/translate.py", line 28, in <module>
    from tensorflow.models.rnn.translate import data_utils
ImportError: No module named translate

环境信息:OS X 10.11.1,Python 2.7.10 (anaconda)

1个回答

4

运行脚本有两种方法:

1)将脚本参数与“--”一起作为bazel run的一部分分开。

bazel run -c opt //tensorflow/models/rnn/translate:translate -- \
--data_dir ./data_dir --train_dir ./checkpoints_directory \
--en_vocab_size=40000 --fr_vocab_size=40000

2) 从./bazel-bin/构建并运行:

bazel build -c opt //tensorflow/models/rnn/translate:translate

./bazel-bin/tensorflow/models/rnn/translate/translate \
--data_dir ./data_dir --train_dir ./checkpoints_directory \
--en_vocab_size=40000 --fr_vocab_size=40000

1
谢谢!用--将脚本与参数分开是关键。然而,我在构建swig时遇到了各种问题。我想知道是否有一种方法可以在不构建的情况下运行示例,因为我已经使用pip安装了tensorflow。你知道这是否可能吗? - Russell
1
通过 pip 安装的组件包括 models.rnn.rnn、models.rnn.rnn_cell 和 models.rnn.seq2seq。如果您想使用 pip 安装的版本,则一个选择是避免使用 bazel 的构建/运行命令:修改您的脚本为 "import tensorflow as tf","from tensorflow.models.rnn import ...";然后使其余导入相对路径。接着,在虚拟环境中运行脚本,而不是使用 bazel。 - Eugene Brevdo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接