人工智能数据挖掘 课件 项目8-模型工程化与实践部署_第1页
人工智能数据挖掘 课件 项目8-模型工程化与实践部署_第2页
人工智能数据挖掘 课件 项目8-模型工程化与实践部署_第3页
人工智能数据挖掘 课件 项目8-模型工程化与实践部署_第4页
人工智能数据挖掘 课件 项目8-模型工程化与实践部署_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据挖掘课程教学课件项目8模型工程化与实践部署通过模型保存、加载与部署实践,完成数据挖掘模型从训练到生产应用的工程化落地模型工程化与实践部署模型保存工程部署实践落地课程导航任务8.1模型保存案例项目8_模型工程化与实践部署2项目描述在这个项目中,将采用实践导向的方法,通过一个完整的模型部署案例,帮助读者理解和掌握数据挖掘模型的工程化和实践部署。我们将从模型的保存和加载,到模型的部署进行详细的讲解和操作,最终实现一个可以在实际生产环境中运行的数据挖掘模型。这个过程涵盖了数据预处理、模型训练、模型保存加载、模型部署等数据挖掘的基本环节,能够帮助读者全面理解数据挖掘模型从训练到部署的全过程。项目8_模型工程化与实践部署3项目实施需求分析:明确模型部署的目标和需求,包括确定模型的预期性能、安全性要求、以及用户访问模式。系统设计:设计模型部署的系统架构,包括选择合适的硬件、软件和网络架构,确保系统可以支持模型的高效运行。环境搭建:配置所需的开发、测试和生产环境,包括安装操作系统、数据库和必要的开发工具。模型开发:根据需求分析结果,选择合适的算法开发模型,并在开发环境中进行测试和优化。模型测试:在测试环境中对模型进行彻底的测试,包括功能测试、性能测试和安全测试。项目8_模型工程化与实践部署4项目目标本项目的目标是将数据挖掘模型工程化和实践部署,使其能够在实际的生产环境中运行并提供服务。这里,我们将详细介绍模型部署的基本概念和目标,模型的保存方法,以及通过一个实际的案例来展示模型的保存和部署过程。项目8_模型工程化与实践部署5企业岗位要求岗位:模型部署工程师要求:熟悉数据挖掘和机器学习算法,能够根据业务需求选择合适的模型。掌握至少一种编程语言,如Python或Java,用于模型开发和部署。熟悉云服务和容器技术,如阿里云、Docker等,用于模型的云部署。项目8_模型工程化与实践部署6思政目标通过本章内容的学习,我们希望大家能够深入理解模型工程化与实践部署的重要性,认识到理论知识与实践操作的结合是提高自身技能,适应社会发展需求的必要途径。同时,希望大家在实践操作中,坚持科学精神,严谨态度,提高解决问题的能力,为将来从事相关工作,服务社会做好准备。项目8_模型工程化与实践部署7知识链接部署模型的基本概念和目标模型部署是数据挖掘应用中的重要环节,通过将训练好的模型集成到实际生产环境中,可以实现对实时数据的处理和决策支持。部署模型的目标是确保其在生产环境中稳定、高效、安全地运行,并能够根据需求变化进行扩展和维护,从而为用户提供优质的服务。模型部署,模型部署是将已经训练好的数据挖掘模型集成到实际的生产环境中,使其能够对实时数据进行预测、分类、推荐等任务的过程。部署后的模型需要能够稳定、快速地响应用户请求,提供所需的服务。项目8_模型工程化与实践部署8任务8.1模型保存案例手写数字识别是一个经典且易于理解的机器学习项目。;该项目涵盖了数据预处理、模型训练、模型部署等数据挖掘的基本环节,能够帮助我们理解和掌握模型部署的核心概念和步骤。项目8_模型工程化与实践部署9任务8.1模型保存案例(1/54)手写数字识别是一个经典且易于理解的机器学习项目。该项目涵盖了数据预处理、模型训练、模型部署等数据挖掘的基本环节,能够帮助我们理解和掌握模型部署的核心概念和步骤。手写数字识别系统通过分析用户上传的手写数字图像,判断其数字内容。该系统在邮政编码识别、表单数据录入等领域有广泛应用。步骤1:项目环境准备。首先,在合适的位置创建项目文件夹,并建立以下目录结构:mnistwebapp/项目8_模型工程化与实践部署10任务8.1模型保存案例(2/54)├──app.py\Flask应用主文件├──trainmodel.py\模型训练脚本├──requirements.txt\项目依赖文件├──models/\模型保存目录│└──mnistcnn.pth\训练好的模型文件项目8_模型工程化与实践部署11任务8.1模型保存案例(3/54)├──templates/\HTML模板目录│└──index.html\前端页面└──static/\静态资源目录└──images/\图片资源目录在项目根目录下创建requirements.txt文件,内容如下:项目8_模型工程化与实践部署12任务8.1模型保存案例(4/54)Flask==2.3.3torch==2.0.1torchvision==0.15.2numpy==1.24.3Pillow==10.0.0项目8_模型工程化与实践部署13任务8.1模型保存案例(5/54)matplotlib==3.7.2scikit-learn==1.3.0pandas==2.0.3seaborn==0.12.2在终端中进入项目目录,执行以下命令安装依赖:项目8_模型工程化与实践部署14任务8.1模型保存案例(6/54)cdmnistwebapppipinstall-rrequirements.txt步骤2:数据准备。数据收集:使用公开的MNIST数据集,包含手写数字图像及其对应的标签(0-9)。数据预处理:标准化图像数据,将图像数据缩放到相同的大小(28×28像素),并进行归一化处理。项目8_模型工程化与实践部署15任务8.1模型保存案例(7/54)步骤3:模型选择与训练。选择模型:使用卷积神经网络(CNN)。训练模型:使用训练数据集训练模型,并使用验证集评估模型性能。在项目根目录下创建trainmodel.py文件,用于训练和保存CNN模型。【例8.1】手写数字识别项目8_模型工程化与实践部署16任务8.1模型保存案例(8/54)\定义卷积神经网络模型"""一个简单的卷积神经网络,用于MNIST分类"""super(MNISTCNN,self).\\init\\()self.conv1=nn.Conv2d(1,32,kernelsize=5)self.conv2=nn.Conv2d(32,64,kernelsize=5)项目8_模型工程化与实践部署17任务8.1模型保存案例(9/54)self.fc1=nn.Linear(1024,1024)self.fc2=nn.Linear(1024,10)x=torch.relu(self.conv1(x))x=torch.maxpool2d(x,2)x=torch.relu(self.conv2(x))项目8_模型工程化与实践部署18任务8.1模型保存案例(10/54)x=torch.maxpool2d(x,2)x=x.view(-1,1024)x=torch.relu(self.fc1(x))x=self.fc2(x)\加载MNIST数据集项目8_模型工程化与实践部署19任务8.1模型保存案例(11/54)X=mnist.data.astype('float32')y=mnist.target.astype('int64')\数据预处理X=X/255.0\归一化X=X.reshape(-1,1,28,28)\重塑为CNN输入格式项目8_模型工程化与实践部署20任务8.1模型保存案例(12/54)\划分训练集和测试集Xtrain,Xtest,ytrain,ytest=traintestsplit(X,y,testsize=0.2,randomstate=42)\转换为PyTorch张量Xtraintensor=torch.tensor(Xtrain)项目8_模型工程化与实践部署21任务8.1模型保存案例(13/54)ytraintensor=torch.tensor(ytrain)Xtesttensor=torch.tensor(Xtest)ytesttensor=torch.tensor(ytest)\创建数据加载器traindataset=TensorDataset(Xtraintensor,ytraintensor)项目8_模型工程化与实践部署22任务8.1模型保存案例(14/54)testdataset=TensorDataset(Xtesttensor,ytesttensor)trainloader=DataLoader(traindataset,batchsize=64,shuffle=True)testloader=DataLoader(testdataset,batchsize=1000,shuffle=False)\初始化模型、优化器和损失函数model=MNISTCNN()项目8_模型工程化与实践部署23任务8.1模型保存案例(15/54)criterion=nn.CrossEntropyLoss()\训练模型epochs=3runningloss=0optimizer.zerograd()项目8_模型工程化与实践部署24任务8.1模型保存案例(16/54)output=model(images)loss=criterion(output,labels)loss.backward()optimizer.step()runningloss+=loss.item()项目8_模型工程化与实践部署25任务8.1模型保存案例(17/54)epochloss=runningloss/len(trainloader)\保存模型MODELPATH=os.path.join("models","mnistcnn.pth")os.makedirs("models")步骤4:模型加载。项目8_模型工程化与实践部署26任务8.1模型保存案例(18/54)在项目根目录下创建loadmodel.py文件,用于测试模型加载功能。【例8.2】模型加载\加载模型\定义模型结构(必须与训练时完全一致)"""一个简单的卷积神经网络,用于MNIST分类"""项目8_模型工程化与实践部署27任务8.1模型保存案例(19/54)super(MNISTCNN,self).\\init\\()self.conv1=nn.Conv2d(1,32,kernelsize=5)self.conv2=nn.Conv2d(32,64,kernelsize=5)self.fc1=nn.Linear(1024,1024)self.fc2=nn.Linear(1024,10)项目8_模型工程化与实践部署28任务8.1模型保存案例(20/54)x=torch.relu(self.conv1(x))x=torch.maxpool2d(x,2)x=torch.relu(self.conv2(x))x=torch.maxpool2d(x,2)x=x.view(-1,1024)项目8_模型工程化与实践部署29任务8.1模型保存案例(21/54)x=torch.relu(self.fc1(x))x=self.fc2(x)\加载训练好的模型MODELPATH=os.path.join("models","mnistcnn.pth")model=MNISTCNN()项目8_模型工程化与实践部署30任务8.1模型保存案例(22/54)步骤5:系统架构设计。前端设计:使用HTML表单允许用户上传手写数字图像并提交进行识别。后端设计:使用Flask构建应用,接收用户上传的图像并返回识别结果。在项目根目录下创建\app.py\文件,这是Flask应用的主文件。【例8.3】后端代码项目8_模型工程化与实践部署31任务8.1模型保存案例(23/54)\定义模型结构"""一个简单的卷积神经网络,用于MNIST分类"""super(MNISTCNN,self).\\init\\()self.conv1=nn.Conv2d(1,32,kernelsize=5)self.conv2=nn.Conv2d(32,64,kernelsize=5)项目8_模型工程化与实践部署32任务8.1模型保存案例(24/54)self.fc1=nn.Linear(1024,1024)self.fc2=nn.Linear(1024,10)x=torch.relu(self.conv1(x))x=torch.maxpool2d(x,2)x=torch.relu(self.conv2(x))项目8_模型工程化与实践部署33任务8.1模型保存案例(25/54)x=torch.maxpool2d(x,2)x=x.view(-1,1024)x=torch.relu(self.fc1(x))x=self.fc2(x)\初始化Flask应用项目8_模型工程化与实践部署34任务8.1模型保存案例(26/54)app=Flask(\\name\\)\加载训练好的模型MODELPATH=os.path.join("models","mnistcnn.pth")model=MNISTCNN()\图像预处理函数项目8_模型工程化与实践部署35任务8.1模型保存案例(27/54)"""将从前端传来的Base64图像数据转换为模型所需的Tensor"""\解码Base64数据\打开图像并转换为灰度图\调整大小为28x28img=img.resize((28,28),Image.LANCZOS)项目8_模型工程化与实践部署36任务8.1模型保存案例(28/54)\转换为NumPy数组并归一化imgnp=np.array(img,dtype=np.float32)imgnp=imgnp/255.0\转换为PyTorchTensor并增加批次和通道维度\路由定义项目8_模型工程化与实践部署37任务8.1模型保存案例(29/54)@app.route('/')"""渲染主页面"""@app.route('/predict',methods=\['POST'\])"""接收图像数据,进行预测并返回结果"""data=request.getjson()项目8_模型工程化与实践部署38任务8.1模型保存案例(30/54)imagedata=data\['image'\]\预处理图像tensor=preprocessimage(imagedata)\使用模型进行预测withtorch.nograd():项目8_模型工程化与实践部署39任务8.1模型保存案例(31/54)output=model(tensor)\,predicted=torch.max(output,1)prediction=predicted.item()\获取概率分布'prediction':prediction,项目8_模型工程化与实践部署40任务8.1模型保存案例(32/54)'probabilities':probabilities.tolist()\运行应用app.run(debug=True,host='',port=5000)步骤6:HTML代码。在\templates\目录下创建\index.html\文件。项目8_模型工程化与实践部署41任务8.1模型保存案例(33/54)【例8.4】前端代码\项目8:手写数字识别\body{font-family:-apple-system,BlinkMacSystemFont,"SegoeUI",Roboto,sans-serif;display:flex;项目8_模型工程化与实践部署42任务8.1模型保存案例(34/54)flex-direction:column;align-items:center;justify-content:center;min-height:100vh;margin:0;项目8_模型工程化与实践部署43任务8.1模型保存案例(35/54)background-color:\f8f9fa;.container{display:flex;gap:40px;align-items:flex-start;项目8_模型工程化与实践部署44任务8.1模型保存案例(36/54)max-width:1200px;width:100%;padding:20px;.main-content{flex:2;项目8_模型工程化与实践部署45任务8.1模型保存案例(37/54)display:flex;flex-direction:column;align-items:center;h1{color:\007bff;项目8_模型工程化与实践部署46任务8.1模型保存案例(38/54)margin-bottom:20px;.canvas-container{border:2pxsolid\007bff;border-radius:8px;margin-bottom:20px;项目8_模型工程化与实践部署47任务8.1模型保存案例(39/54)touch-action:none;canvas{display:block;cursor:crosshair;.controls{项目8_模型工程化与实践部署48任务8.1模型保存案例(40/54)display:flex;gap:10px;margin-bottom:20px;button{padding:10px20px;项目8_模型工程化与实践部署49任务8.1模型保存案例(41/54)font-size:16px;border:none;border-radius:5px;cursor:pointer;background-color:\007bff;项目8_模型工程化与实践部署50任务8.1模型保存案例(42/54)color:white;transition:background-color0.3s;button:hover{background-color:\0056b3;\prediction-result{项目8_模型工程化与实践部署51任务8.1模型保存案例(43/54)font-size:2.5em;font-weight:bold;color:\28a745;height:50px;\手写数字识别系统\项目8_模型工程化与实践部署52任务8.1模型保存案例(44/54)\\\识别数字\\清除画布\\\//设置画布样式项目8_模型工程化与实践部署53任务8.1模型保存案例(45/54)ctx.fillStyle='white';ctx.fillRect(0,0,canvas.width,canvas.height);ctx.strokeStyle='black';ctx.lineWidth=15;ctx.lineCap='round';项目8_模型工程化与实践部署54任务8.1模型保存案例(46/54)//鼠标事件canvas.addEventListener('mousedown',startDrawing);canvas.addEventListener('mousemove',draw);canvas.addEventListener('mouseup',stopDrawing);canvas.addEventListener('mouseout',stopDrawing);项目8_模型工程化与实践部署55任务8.1模型保存案例(47/54)isDrawing=true;draw(e);ctx.lineTo(x,y);ctx.stroke();ctx.beginPath();项目8_模型工程化与实践部署56任务8.1模型保存案例(48/54)ctx.moveTo(x,y);ctx.beginPath();isDrawing=false;//清除画布ctx.fillStyle='white';项目8_模型工程化与实践部署57任务8.1模型保存案例(49/54)ctx.fillRect(0,0,canvas.width,canvas.height);document.getElementById('prediction-result').textContent='';});//预测数字fetch('/predict',{项目8_模型工程化与实践部署58任务8.1模型保存案例(5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论