Joblib.load __main__ AttributeErrorPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Joblib.load __main__ AttributeError

Сообщение Anonymous »

Я начинаю погружаться в развертывание прогнозной модели в веб-приложении с помощью Flask и, к сожалению, застреваю на старте.

Что я сделал:

Я замариновал свою модель в своем Программа model.py:

Код: Выделить всё

import numpy as np
from sklearn.externals import joblib

class NeuralNetwork():
"""
Two (hidden) layer neural network model.
First and second layer contain the same number of hidden units
"""
def __init__(self, input_dim, units, std=0.0001):
self.params = {}
self.input_dim = input_dim

self.params['W1'] = np.random.rand(self.input_dim, units)
self.params['W1'] *= std
self.params['b1'] = np.zeros((units))

self.params['W2'] = np.random.rand(units, units)
self.params['W2'] *= std * 10  # Compensate for vanishing gradients
self.params['b2'] = np.zeros((units))

self.params['W3'] = np.random.rand(units, 1)
self.params['b3'] = np.zeros((1,))

model = NeuralNetwork(input_dim=12, units=64)

#####THIS RIGHT HERE ##############
joblib.dump(model, 'demo_model.pkl')
затем я создал файл api.py в том же каталоге, что и мой demo_model.pkl, согласно этому руководству. (https://blog.hyperiondev.com/index.php/ ... flask-api/):

Код: Выделить всё

import flask
from flask import Flask, render_template, request
from sklearn.externals import joblib

app = Flask(__name__)

@app.route("/")
@app.route("/index")
def index():
return flask.render_template('index.html')

# create endpoint for the predictions (HTTP POST requests)
@app.route('/predict', methods=['POST'])
def make_prediction():
if request.method == 'POST':
return render_template('index.html', label='3')

if __name__ == '__main__':
# LOAD MODEL WHEN APP RUNS ####
model = joblib.load('demo_model.pkl')
app.run(host='0.0.0.0', port=8000, debug=True)
Я также создал файл templates/index.html с этой информацией в том же каталоге:

Код: Выделить всё


NN Model as Flask API




Boston Housing Price Predictor


 {% if label %} {{ label }} {% endif %}




бег:

Код: Выделить всё

>> python api.py
выдает ошибку при сборке:

Код: Выделить всё

Traceback (most recent call last):
File "api.py", line 22, in 
model = joblib.load('model.pkl')
File "C:\Users\joshu\Anaconda3\lib\site-packages\sklearn\externals\joblib\numpy_pickle.py", line 578, in load
obj = _unpickle(fobj, filename, mmap_mode)
File "C:\Users\joshu\Anaconda3\lib\site-packages\sklearn\externals\joblib\numpy_pickle.py", line 508, in _unpickle
obj = unpickler.load()
File "C:\Users\joshu\Anaconda3\lib\pickle.py", line 1043, in load
dispatch[key[0]](self)
File "C:\Users\joshu\Anaconda3\lib\pickle.py", line 1342, in load_global
klass = self.find_class(module, name)
File "C:\Users\joshu\Anaconda3\lib\pickle.py", line 1396, in find_class
return getattr(sys.modules[module], name)
AttributeError: module '__main__' has no attribute 'NeuralNetwork'
Почему основной модуль программы взаимодействует с моей моделью NeuralNetwork? Я сейчас очень в замешательстве... буду рад любому совету.

ОБНОВЛЕНИЕ:
Добавление определения класса class NeuralNetwork(object): pass в мою программу api.py устранило ошибку.

Код: Выделить всё

import flask
from flask import Flask, render_template, request
from sklearn.externals import joblib

class NeuralNetwork(object):
pass

app = Flask(__name__)
Если кто-нибудь захочет объяснить мне, что происходит, я буду очень признателен!

Подробнее здесь: https://stackoverflow.com/questions/496 ... ibuteerror
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка joblib.load и Pickle.load «Нет атрибута XGBoostLabelEncoder»
    Anonymous » » в форуме Python
    0 Ответы
    46 Просмотры
    Последнее сообщение Anonymous
  • Meta load() Метод загрузки рекламы устарел. Как использовать load(withBidPayload: <#T##String#>)
    Anonymous » » в форуме IOS
    0 Ответы
    39 Просмотры
    Последнее сообщение Anonymous
  • Как избежать параллельного открытия множества файлов в joblib?
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как использовать блокировки многопроцессорности в joblib?
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'app/mlsample/model/clf.joblib'
    Anonymous » » в форуме Python
    0 Ответы
    88 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»