无法在 Azure 函数中添加 ML 模型 Python3
Unable to add ML Model in Azure Function Python3
我正在尝试创建一个 azure 函数,它将 return 来自我的 ML 模型 (final_model.sav) 的数据。
通过这样做,ML 模型将在 Internet 上可用。
我的 Azure Function(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'))
行程序时停止工作。
我已将 'final_model.sav' 放在函数目录中(init.py 所在的相同位置)。
Function中的文件如下:
prediction.py
只是一个无用的文件。请忽略它。它没有对程序作出任何结论。
我认为绑定可能存在问题。请检查我的 function.json
文件。
function.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' 所在的同一级别。
我正在尝试创建一个 azure 函数,它将 return 来自我的 ML 模型 (final_model.sav) 的数据。 通过这样做,ML 模型将在 Internet 上可用。
我的 Azure Function(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
.
我遇到了这个错误:
Exception: FileNotFoundError: [Errno 2] No such file or directory: 'final_model.sav'
但我在同一目录中有 final_model.sav
文件。我不知道为什么它没有检测到它。
当我尝试调试代码时,我发现我的程序在遇到 load_model = pickle.load(open('final_model.sav', 'rb'))
行程序时停止工作。
我已将 'final_model.sav' 放在函数目录中(init.py 所在的相同位置)。
Function中的文件如下:
prediction.py
只是一个无用的文件。请忽略它。它没有对程序作出任何结论。
我认为绑定可能存在问题。请检查我的 function.json
文件。
function.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' 所在的同一级别。