2017-04-17 12 views
0

私はGCP mlのエンジンでジョブとして、次のおもちゃのスニペットを提出しようとしている:は、GCP mlのエンジンでは動作しないscipy.misc.imresize

import tensorflow as tf 
import numpy as np 
import scipy.misc 

x = np.zeros([10, 10, 1]) 
y = scipy.misc.imresize(x[:, :, 0], [50, 50, 1], interp='nearest') 
print(y) 
print(y.shape) 

それは仕事の後に、次のエラーを与えていますサーバで起動:

File "/root/.local/lib/python2.7/site-packages/teste/test.py", line 6, in <module> 
y = scipy.misc.imresize(x[:, :, 0], [50, 50, 1], interp='nearest') 
AttributeError: 'module' object has no attribute 'imresize' 

これはローカルでは完全に機能し、Cloud-MLドキュメントによれば、scipyパッケージがサポートされています。どうやら、importステートメントは何のエラーも与えていないので、モジュール自身の問題ではありません。

+0

ml-engineを使用する場合は、setup.pyファイルを使用してパッケージをビルドする必要があります。 scipyに依存関係を追加してみてください(setup関数の 'install_requires'フィールドを使用して)。 – ma3oun

+1

実際にはscipyを追加するだけでは不十分です。受け入れられた答えとして枕を追加する必要があります。 –

答えて

2

scipy.misc.imresizeには、PILをインストールする必要があります。これはおそらくローカルにインストールされている(動作しているため)。

コードがクラウドで正しく実行されるようにするには、pillowがインストールされていることを確認する必要があります。独自のsetup.pyを作成した場合は、要件一覧にpillowが含まれています。あなたが独自に作成する必要がある場合は、このようなsetup.pyを作成:

from setuptools import find_packages 
from setuptools import setup 

REQUIRED_PACKAGES = ['pillow'] 

setup(
    name='trainer', 
    version='0.1', 
    install_requires=REQUIRED_PACKAGES, 
    packages=find_packages(), 
    include_package_data=True, 
    description='My trainer application package.' 
) 

source、一つの重要な変更と、packages属性)

を推奨ディレクトリのレイアウトの詳細については、公式CloudMLエンジンdocumentationを参照してください。およびパッケージングの指示。

+0

機能の一部を使用するためにinstall_requiresにscipyを追加する必要はないことが不思議ですが、scipyを追加せずにscipy.misc.factorialを呼び出そうとしましたが、機能していました。 –

+0

明らかに、モジュールが暗黙的に利用可能であり、実行時画像で利用可能であると述べていますが、明示的なinstall_requiresを必要とするかどうかは明らかではありません –

+1

このケースは、scipy.miscの画像操作関数がPILしかし、scipyはPILをインストールしません。 CloudML環境にはscipyが含まれていますが、PILは含まれていません。既にインストールされているもののリストについては、https://cloud.google.com/ml-engine/docs/concepts/runtime-version-listをご覧ください。 – rhaertel80

関連する問題