Python 3.x Can';t在AWS Lambda上进口KERA“;模块初始化错误:[Errno 38]功能未实现;

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

我正在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 '__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解决了这个问题