2017-04-17 82 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