Я получаю следующую ошибку, когда пытаюсь выполнить вывод на модели sklearn при использовании в качестве лямбда-функции в AWS - PullRequest
0 голосов
/ 25 марта 2019

Код, используемый для вывода:

import json
import pickle
import numpy as np
import boto3

s3 = boto3.resource('s3')

# Function for transferring pickles from s3 to lambda 
def download_files_from_s3():
    with open('/tmp/km_model_on_space_data.pkl', 'wb') as f:
        s3.Bucket("ml-model-first-try").download_fileobj("km_model_on_space_data.pkl", f)
    with open('/tmp/tfidf_vectorizer.pkl', 'wb') as f:
        s3.Bucket("ml-model-first-try").download_fileobj("tfidf_vectorizer.pkl", f)
    with open('/tmp/cluster_distances.pkl', 'wb') as f:
        s3.Bucket("ml-model-first-try").download_fileobj("cluster_distances.pkl", f)
    with open('/tmp/space_ids_only.pkl', 'wb') as f:
        s3.Bucket("ml-model-first-try").download_fileobj("space_ids_only.pkl", f)

# Downloading files from s3 to lambda ------------ Comment the next line if data is already downloaded
download_files_from_s3()

# Loading pickles
km = pickle.load(open('/tmp/km_model_on_space_data.pkl','rb'))
tfidf_vectorizer = pickle.load(open('/tmp/tfidf_vectorizer.pkl','rb'))
cluster_distances = pickle.load(open('/tmp/cluster_distances.pkl','rb'))
space_ids = pickle.load(open('/tmp/space_ids_only.pkl','rb'))

# Automatically called everytime
def lambda_handler(event, context):
    tfidf = tfidf_vectorizer.transform([event['text']])
    cluster = km.predict(tfidf)
    cluster_arr = cluster_distances[:,cluster[0]]
    cluter_arr_sorted = cluster_arr.argsort()
    recommended_space_ids = []
    for i in cluter_arr_sorted[0:10]:
        recommended_space_ids.append(space_ids[i])
    return {'Cluster_Number' : cluster[0], 'Space_Ids' : recommended_space_ids}

Заархивированные файлы сохраняются в s3 и извлекаются в лямбду. Затем они используются для вывода. Zip-файл, загруженный на s3, содержит все необходимые библиотеки, такие как numpy, sklearn и т. Д., А также файл function.py, код которого приведен выше. Он содержит lambda_handler, который используется для вывода.

Ошибка:

"Невозможно импортировать функцию модуля": динамический модуль не определяет функцию экспорта модуля (PyInit_multiarray) "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...