如何为 Cloud ML Engine 打包词汇文件
How to package vocabulary file for Cloud ML Engine
我有一个 .txt 文件,其中每行包含不同的标签。我用这个文件创建标签索引查找文件,例如:
label_index = tf.contrib.lookup.index_table_from_file(vocabulary_file = 'labels.txt'
我想知道我应该如何使用我的云 ml-engine 打包词汇文件? packaging suggestions 明确说明了如何设置 .py 文件,但我不完全确定应该将相关的 .txt 文件放在哪里。它们应该只托管在引擎可以访问的存储桶(即 gs://)中,还是可以以某种方式与训练器一起打包?
您有多种选择。我认为最直接的是将 labels.txt
存储在 GCS 位置。
但是,如果您愿意,也可以将文件打包到 setup.py
中。有多种方法可以做到这一点,所以我会推荐你参考 official setuptools documentation.
让我看一个简单的例子:
在你的训练包下面的目录中创建一个 setup.py
(在 CloudML Engine 的示例中通常称为 trainer
,所以我会继续,就好像你的代码结构与示例相同,包括使用 trainer
作为包)。以下是基于您引用的 docs 的一个重要更改,即 package_data
参数而不是 include_package_data
:
from setuptools import find_packages
from setuptools import setup
setup(
name='my_model',
version='0.1',
install_requires=REQUIRED_PACKAGES,
packages=find_packages(),
package_data={'trainer': ['labels.txt']},
description='My trainer application package.'
)
如果你 运行 python setup.py sdist
,你可以看到 trainer/labels.txt
被复制到压缩包中。
然后在您的代码中,您可以像这样访问文件:
from pkg_resources import Requirement, resource_filename
resource_filename(Requirement.parse('trainer'),'labels.txt')
请注意,要在本地 运行 此代码,您将必须安装您的软件包:python setup.py install [--user]
。
这就是我认为将文件存储在 GCS 上可能更容易的主要原因。
我有一个 .txt 文件,其中每行包含不同的标签。我用这个文件创建标签索引查找文件,例如:
label_index = tf.contrib.lookup.index_table_from_file(vocabulary_file = 'labels.txt'
我想知道我应该如何使用我的云 ml-engine 打包词汇文件? packaging suggestions 明确说明了如何设置 .py 文件,但我不完全确定应该将相关的 .txt 文件放在哪里。它们应该只托管在引擎可以访问的存储桶(即 gs://)中,还是可以以某种方式与训练器一起打包?
您有多种选择。我认为最直接的是将 labels.txt
存储在 GCS 位置。
但是,如果您愿意,也可以将文件打包到 setup.py
中。有多种方法可以做到这一点,所以我会推荐你参考 official setuptools documentation.
让我看一个简单的例子:
在你的训练包下面的目录中创建一个 setup.py
(在 CloudML Engine 的示例中通常称为 trainer
,所以我会继续,就好像你的代码结构与示例相同,包括使用 trainer
作为包)。以下是基于您引用的 docs 的一个重要更改,即 package_data
参数而不是 include_package_data
:
from setuptools import find_packages
from setuptools import setup
setup(
name='my_model',
version='0.1',
install_requires=REQUIRED_PACKAGES,
packages=find_packages(),
package_data={'trainer': ['labels.txt']},
description='My trainer application package.'
)
如果你 运行 python setup.py sdist
,你可以看到 trainer/labels.txt
被复制到压缩包中。
然后在您的代码中,您可以像这样访问文件:
from pkg_resources import Requirement, resource_filename
resource_filename(Requirement.parse('trainer'),'labels.txt')
请注意,要在本地 运行 此代码,您将必须安装您的软件包:python setup.py install [--user]
。
这就是我认为将文件存储在 GCS 上可能更容易的主要原因。