前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习项目是如何开发和部署的?

机器学习项目是如何开发和部署的?

作者头像
陆道峰
发布2020-06-17 16:25:31
5180
发布2020-06-17 16:25:31
举报

本文以一个小项目带你弄清ML的项目流程

这周做作业查资料时,无意中看到一个GitHub项目ML-web-app,它以PyTorch训练MNIST文字识别模型为例,介绍了从模型训练部署上线的整个流程。是非常好的学习项目!下图是效果图:

笔者浏览了项目的代码,以学习为目的,简单解读下这个项目。

模型训练

模型训练是相对独立的部分,可以由算法工程师来做。总结起来就是调用PyTorch接口,建立一个神经网络,然后利用MNIST数据进行训练,最后把训练好的模型文件存储起来,后面部署的时候要用到

服务部署

该项目使用Flask框架部署服务,为了方便阅读,笔者对代码进行了精简

下面的代码中,通过加载预训练好的模型数据,得到模型实例,可以进行预测:

代码语言:javascript
复制
# initialize flask application
app = Flask(__name__)

# Read model to keep it ready all the time
model = MyModel('./ml_model/trained_weights.pth', 'cpu')

核心预测API路由,路径是/predict

代码语言:javascript
复制
@app.route('/predict', methods=['GET','POST'])
def predict():
    results = {"prediction" :"Empty", "probability" :{}}

    input_img = BytesIO(base64.urlsafe_b64decode(request.form['img']))

    res =  model.predict(input_img)
    return json.dumps(results)

请求过程

默认主页是通过模板渲染的,在index.js中定义了两个核心函数:

  1. onRecognition函数通过Ajax向/predict API路由发送POST请求,请求中封装了要识别的图片,然后获取模型预测结果。
代码语言:javascript
复制
// post data to server for recognition
function onRecognition() {
    $.ajax({
            url: './predict',
            type:'POST',
            data : {img : cvsIn.toDataURL("image/png").replace('data:image/png;base64,','') },

        }).done(function(data) {
            showResult(JSON.parse(data))
        })
}
  1. showResult函数把结果渲染出来。
代码语言:javascript
复制
function showResult(resultJson){
    // show predict digit
    divOut.textContent = resultJson.prediction;
    // show probability
    document.getElementById("probStr").innerHTML =
        "Probability : " + resultJson.probability.toFixed(2) + "%";
}

总结

这个项目麻雀虽小,五脏俱全。可以帮助非算法类程序员一窥ML从建模到上线部署整个流程,透过火爆的趋势看清本质。

我把网页放在原文中了,如果你感兴趣,可以点击阅读原文体验。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与系统 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 模型训练
  • 服务部署
  • 请求过程
  • 总结
相关产品与服务
文字识别
文字识别(Optical Character Recognition,OCR)基于腾讯优图实验室的深度学习技术,将图片上的文字内容,智能识别成为可编辑的文本。OCR 支持身份证、名片等卡证类和票据类的印刷体识别,也支持运单等手写体识别,支持提供定制化服务,可以有效地代替人工录入信息。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档