Python 3.x Can';t在AWS Lambda上进口KERA“;模块初始化错误:[Errno 38]功能未实现;
我正在AWS中部署一个使用Keras和Tensorflow的深度学习模型 拉姆达。为了绕过Lambda未压缩250MB的大小限制,我使用此选项将包大小减少到限制以下:Python 3.x Can';t在AWS Lambda上进口KERA“;模块初始化错误:[Errno 38]功能未实现;,python-3.x,lambda,multiprocessing,keras,Python 3.x,Lambda,Multiprocessing,Keras,我正在AWS中部署一个使用Keras和Tensorflow的深度学习模型 拉姆达。为了绕过Lambda未压缩250MB的大小限制,我使用此选项将包大小减少到限制以下: cd /home/ec2-user/build_dnn_nlp/env/lib64/python3.6/site-packages find . -name "*.so" | xargs strip find . -type f -name '*.pyc' -delete find . -type d -name '__pycac
cd /home/ec2-user/build_dnn_nlp/env/lib64/python3.6/site-packages
find . -name "*.so" | xargs strip
find . -type f -name '*.pyc' -delete
find . -type d -name '__pycache__' -delete
现在,当我尝试导入keras时,我在Lambda控制台中看到以下错误:
模块初始化错误:[Errno 38]功能未实现
我认为错误38与多处理有关,因为lambda实例没有共享内存(no/dev/shm/),所以不可能进行多处理
为了避免keras中的任何多处理,我在导入keras之前将tensorflow设置为单核模式,并使用print语句帮助在Lambda上进行调试。虽然“将CPU设置为1核”打印,但它总是在导入keras时停止
def orchestrate(text):
import tensorflow as tf
print('imported tf')
config = tf.ConfigProto(
intra_op_parallelism_threads=1,
inter_op_parallelism_threads=num_cores,
allow_soft_placement=True,
device_count={'CPU': 1})
session = tf.Session(config=config)
print('set cpu to 1 core')
from keras import backend as K
print('import keras backend')
K.set_session(session)
print('set session')
from keras.layers import Activation, Dense, Dropout
from keras.models import Sequential, load_model
from keras.preprocessing.text import Tokenizer
print('imported keras libs ')
model = define_model()
导入keras需要多处理(如果这是问题的话)如何?如果其他人在AWS Lambda上部署了keras,我做了什么来打破它?您解决了这个问题吗?我最终通过使用tensorflow导入keras中现在包含在tensorflow
中的keras解决了这个问题