2017-04-17 86 views
0

我試圖提交下列玩具片段在GCP毫升發動機工作:scipy.misc.imresize不GCP毫升發動機的工作

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引擎時,您必須使用setup.py文件構建一個包。嘗試向scipy添加依賴項(使用setup函數的'install_requires'字段)。 – ma3oun

+1

其實只是添加scipy是不夠的,你必須添加枕頭作爲接受的答案說。 –

回答

2

scipy.misc.imresize要求安裝PIL,您可能已經在本地安裝了PIL(因爲它工作正常)。

爲確保您的代碼在雲中正常運行,您需要確保已安裝pillow。如果您已在要求列表中創建了自己的setup.py包括pillow。如果您需要創建自己的,創建一個setup.py這樣的:

(有一個重要的修改,在 packages屬性 source

看到官方CloudML引擎documentation,瞭解更多有關建議

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.' 
) 

目錄佈局和包裝說明。

+0

奇怪的是,它不需要將scipy添加到install_requires以使用它的某些功能,我嘗試調用scipy.misc.factorial而不添加scipy並且它正在工作。 –

+0

顯然,在文檔中哪些模塊隱式提供並且哪些模塊需要明確的install_requires並不清楚,即使它們在運行時圖像中聲明爲可用 –

+1

這種情況特別令人困惑,因爲scipy.misc中的圖像處理函數需要PIL ,但scipy不會安裝PIL。 CloudML環境確實包含scipy,但不包含PIL。有關已安裝內容的列表,請參閱https://cloud.google.com/ml-engine/docs/concepts/runtime-version-list – rhaertel80