У нас есть лямбда-функция, где мы будем использовать Keras для извлечения функций из изображений.Таким образом, когда лямбда-функция пытается загрузить модель imagenet VGG16, время ожидания истекает.
Код, по которому лямбда получает тайм-аут: -
from keras.applications.vgg16 import VGG16
model = VGG16(weights='imagenet', include_top=True)
Как решить эту проблему?Можем ли мы войти в бэкэнд-контейнер лямбда-функции и загрузить модель?
Лямбда-код: -
import os
import shutil
import stat
import zipfile
import boto3
from six.moves import urllib
s3 = boto3.client('s3')
def download(url, local_fpath):
print('downloading other files........')
s3.download_file('HARDCODED_BUCKET', url,local_fpath)
def make_gcc_executable():
for fpath in os.listdir("/tmp/gcc/bin"):
fpath = os.path.join("/tmp/gcc/bin", fpath)
st = os.stat(fpath)
os.chmod(fpath, st.st_mode | stat.S_IXOTH | stat.S_IXGRP | stat.S_IXUSR)
for fpath in os.listdir("/tmp/gcc/libexec/gcc/x86_64-linux-gnu/4.6.4"):
fpath = os.path.join("/tmp/gcc/libexec/gcc/x86_64-linux-gnu/4.6.4", fpath)
st = os.stat(fpath)
os.chmod(fpath, st.st_mode | stat.S_IXOTH | stat.S_IXGRP | stat.S_IXUSR)
# Download GCC and uncompress it.
download('test/imglib-new/gcc.zip', "/tmp/gcc.zip")
zipfile.ZipFile("/tmp/gcc.zip").extractall("/tmp/gcc")
make_gcc_executable()
from keras.preprocessing import image
from keras.applications.vgg16 import VGG16
from keras.applications.vgg16 import preprocess_input
import numpy as np
def _get_model2():
print('downloadin our model....')
s3.download_file('BUCKET','test/model/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5','/tmp/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5')
#model = VGG16(weights='imagenet', include_top=False)
print('model download is done')
model = VGG16(weights='/tmp/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5')
return model
model = _get_model2()
def handler(event, context):
print('entering the function..downloading the images')
download_loc='/tmp/dog2.jpg'
s3.download_file('BUCKET', 'test/images/dog2.jpg',download_loc)
print('image is downloaded')
print('running the model now..')
img = image.load_img(download_loc, target_size=(224, 224))
img_data = image.img_to_array(img)
img_data = np.expand_dims(img_data, axis=0)
img_data = preprocess_input(img_data)
print('extracting the feature...')
vgg16_feature = model.predict(img_data)
print('over..')
print(vgg16_feature.shape)
Сообщение об ошибке: -
START RequestId: 00827d13-d7a4-11e8-9ea2-c5365d4fbfcb Version: $LATEST
module initialization error: Compilation failed (return status=1): /tmp/.theano/compiledir_Linux-4.14-amzn1.x86_64-x86_64-with-glibc2.2.5-x86_64-3.6.1-64/lazylinker_ext/mod.cpp:1:20: fatal error: Python.h: No such file or directory. compilation terminated..
END RequestId: 00827d13-d7a4-11e8-9ea2-c5365d4fbfcb
REPORT RequestId: 00827d13-d7a4-11e8-9ea2-c5365d4fbfcb Duration: 153.15 ms Billed Duration: 200 ms Memory Size: 832 MB Max Memory Used: 225 MB
module initialization error
Compilation failed (return status=1): /tmp/.theano/compiledir_Linux-4.14-amzn1.x86_64-x86_64-with-glibc2.2.5-x86_64-3.6.1-64/lazylinker_ext/mod.cpp:1:20: fatal error: Python.h: No such file or directory. compilation terminated..