[英]Unable to run and get output from ML model after publishing on Azure function app
[英]Unable to add ML Model in Azure Function Python3
我正在尝试创建一个 azure 函数,它将从我的 ML 模型 (final_model.sav) 返回数据。 通过这样做,ML 模型将在互联网上可用。
我的 Azure 函数( init .py)程序:
import azure.functions as func
import pickle
def main(req: func.HttpRequest) -> func.HttpResponse:
name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')
if name:
var=name
load_model = pickle.load(open('final_model.sav', 'rb'))
prediction = load_model.predict([var])
prob = load_model.predict_proba([var])
return func.HttpResponse(f"{prediction[0]}&{prob[0][1]}.")
else:
return func.HttpResponse(
"This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
status_code=200
)
但是每当我试图通过 HTTP 端点(“http://localhost:7071/api/News?name=HelloWorld”)触发这个函数时,它都会给出错误 500。我在requirements.txt
包含了“sklearn”包。
我遇到了这个错误:
Exception: FileNotFoundError: [Errno 2] No such file or directory: 'final_model.sav'
但我在同一目录中有final_model.sav
文件。 我不知道为什么它没有检测到它。
当我尝试调试代码时,我发现我的程序在遇到load_model = pickle.load(open('final_model.sav', 'rb'))
程序load_model = pickle.load(open('final_model.sav', 'rb'))
停止工作。 我已将“final_model.sav”放在函数目录中(与init .py 所在的位置相同)。
prediction.py
只是一个无用的文件。 请忽略它。 它没有总结任何关于该程序的内容。
我认为绑定可能存在问题。 请检查我的function.json
文件。
函数.json:
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "$return"
}
]
}
感谢您为我的问题付出宝贵的时间。 非常感谢。
由于您使用open('final_model.sav', 'rb')
从根路径加载文件,它会在函数应用程序主页位置查找该文件。 因此,将“final_model.sav”移动到那里,即移动到“host.json”所在的同一级别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.