[英]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打包在一起? 打包建議在如何設置.py文件中是明確的,但我不確定要在哪里放置相關的.txt文件。 應該將它們托管在引擎可以訪問的存儲桶(即gs://)中,還是可以將其與教練打包在一起?
您有多種選擇。 我認為最直接的方法是將labels.txt
存儲在GCS位置。
但是,如果您願意,也可以將文件打包在setup.py
。 有多種方法可以執行此操作,因此,我將為您提供正式的setuptools文檔 。
讓我來看一個簡單的例子:
創建一個setup.py
在你的訓練包下面的目錄(通常被稱為trainer
CloudML引擎的樣品中,所以我將繼續進行,如果你的代碼的結構一樣的樣品,包括使用trainer
作為包)。 以下內容基於您引用的文檔進行了一項重要更改,即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上可能更容易的主要原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.