首页 文章

如何打包Cloud ML Engine的词汇表文件

提问于
浏览
1

我有一个.txt文件,每行包含一个不同的标签 . 我使用此文件来创建标签索引查找文件,例如:

label_index = tf.contrib.lookup.index_table_from_file(vocabulary_file = 'labels.txt'

我想知道我应该如何使用我的cloud ml-engine打包词汇表文件? packaging suggestions在如何设置.py文件方面是明确的,但我不完全确定在哪里放置相关的.txt文件 . 它们应该只托管在引擎可以访问的存储桶(即gs://)中,还是可以以某种方式与培训师一起打包?

1 回答

  • 2

    你有多种选择 . 我认为最直接的方法是将 labels.txt 存储在GCS位置 .

    但是,如果您愿意,也可以在 setup.py 中打包文件 . 有多种方法可以做到这一点,所以我会把你推荐给official setuptools documentation .

    让我来看一个简单的例子:

    在训练包下面的目录中创建 setup.py (在CloudML Engine中通常称为 trainer 's samples, so I will proceed as if you' re代码的结构与样本相同,包括使用 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 已复制到tarball中 .

    然后在您的代码中,您可以像这样访问文件:

    from pkg_resources import Requirement, resource_filename
    resource_filename(Requirement.parse('trainer'),'labels.txt')
    

    请注意,要在本地运行此代码,您必须安装软件包: python setup.py install [--user] .

    这就是我认为在GCS上存储文件可能更容易的主要原因 .

相关问题