当前位置: 首页 > news >正文

机器学习实战六步法之训练模型、优化模型、部署模型(七)

要落地一个机器学习的项目,是有章可循的,通过这六个步骤,小白也能搞定机器学习。

看我闪电六连鞭!🤣

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8fokt0Mq-1686313603676)(image/image-20230604123237459.png)]

训练模型

当确定好机器学习算法之后,就可以通过训练数据集中的特征和标签,根据样本数据的损失来拟合函数(模型),来获得最优的模型参数来建立模型。

拟合模型是指通过训练数据集来找到一个能够最好地描述数据之间关系的函数。通俗的说,就是让机器学习算法学习输入数据与输出数据之间的关系,并生成一个可以对新数据进行预测的模型。

所谓损失函数就是模型对数据预测的准确程度,损失越小预测的结果更精准。

在这里插入图片描述

机器学习每训练一次,都会计算损失,逐渐减小训练集上的损失的过程,就是寻找最优模型参数的过程。(注意这里是模型内部的参数

需要注意的是,过度拟合训练数据集可能导致模型在新数据上的性能表现不佳,因此需要进行适当的模型选择和调整,以避免过拟合和欠拟合等问题。

在这里插入图片描述

过拟合(Overfitting)是指机器学习模型在训练数据上表现良好,但在测试数据上表现较差的现象。换句话说,过拟合是指模型在训练数据上过度拟合,导致其不能很好地泛化到测试数据和实际数据中。

过拟合其实就是降低了模型的泛化能力。

评估、优化模型

训练模型是算法寻找最优的模型的内部参数。而评估和优化模型就是在验证集或测试集上进行模型效果评估的过程中,对模型的外部参数(超参数)进行优化。超参数,是指在模型训练之前需要设置的参数,用于控制模型结构和训练过程中的一些超参数。

常用的一些超参数包括:神经网络的层数、学习速率、优化器等,这些超参数的选择会影响模型的复杂度和性能,因此需要进行调整和优化以获得更好的模型性能。

如何评估模型优劣?

机器学习工具包(如 scikit-learn)中都会提供常用的工具和指标,对验证集和测试集进行评估,进而计算当前的误差。比如 R2 或者 MSE指标,就可以用于评估回归分析模型的优劣。

模型效果不好怎么办?

如果模型的评估分数不理想,那我们就要调整模型的超参数,来重新训练模型。如果怎么调整都不理想的话,那就要考虑更换算法,可能是算法选择有问题。

部署模型

当模型经过评估和优化之后满足业务诉求,之后就可以部署模型了。部署模型就是将训练好的模型应用于生产环境当中。部署的时候通常还要考虑到模型的性能、可靠性、安全性、扩展性和可维护性。

在这里插入图片描述

在机器学习中,部署模型是将训练好的模型应用于实际生产环境中的一个重要步骤。部署模型需要考虑多个因素,包括模型的性能、可靠性、安全性、扩展性和可维护性等。以下是几种常见的部署模型的方法:

  1. REST API:使用REST API是一种常见的模型部署方式。将模型封装成一个RESTful API,客户端可以通过HTTP请求将数据发送到API,获取模型的预测结果。这种方法可以适用于多种编程语言和框架,并且具有较好的可扩展性和可维护性。例如,TensorFlow Serving就是一种开源的模型服务器,可以将TensorFlow模型部署为REST API。

  2. Docker容器:使用Docker容器是一种常见的轻量级部署方式。将模型和运行所需的依赖项打包成一个Docker镜像,可以方便地部署到云端或本地环境中。这种方法具有较好的可移植性和可扩展性,可以快速部署和更新模型。例如,Google Cloud AI Platform就支持将模型部署为Docker容器。

  3. 服务器端less计算:使用服务器端less计算是一种新兴的部署方式。将模型部署到云端的服务器端less计算平台上,可以根据实际请求的工作负载自动扩展和缩减计算资源,以满足应用程序的需要。这种方法具有较低的成本和更好的弹性,可以快速响应高并发的请求。例如,AWS Lambda就是一种支持部署无服务器函数的平台。

  4. 嵌入式设备:使用嵌入式设备是一种常见的物联网场景下的部署方式。将模型部署到嵌入式设备上,可以在本地对数据进行实时预测,而无需将数据发送到云端进行处理。这种方法具有较低的延迟和更好的隐私保护,适用于需要在边缘设备上进行实时推理的场景。例如,TensorFlow Lite就是一种支持在移动设备和嵌入式设备上进行模型部署的框架。

总之,在机器学习中,部署模型需要根据具体的场景和需求选择合适的部署方式,并考虑模型的性能、可靠性、安全性、扩展性和可维护性等因素。需要注意的是,在部署模型之前,需要对模型进行充分的测试和评估,以确保模型的质量和可靠性。

REST API常用开源框架:

在机器学习中,将模型封装成REST API的开源框架有很多。以下是几个常用的开源框架:

  1. TensorFlow Serving: TensorFlow Serving是由Google开发的一个开源的模型服务器,可以将TensorFlow模型部署为REST API,支持多种模型格式和网络协议,具有较好的性能和可扩展性。使用TensorFlow Serving可以轻松部署和管理大规模的机器学习模型,例如在生产环境中进行图像分类、语音识别等任务。

    https://github.com/tensorflow/serving

  2. PyTorch Lightning: PyTorch Lightning是一个基于PyTorch的高级深度学习框架,提供了一系列高级抽象和功能,帮助用户快速构建和训练模型。其中包括一些用于部署模型的工具,例如将模型封装为REST API的接口。使用PyTorch Lightning可以快速构建、训练和部署复杂的深度学习模型,并支持多种部署方式,例如云端部署、边缘设备部署等。

    https://www.pytorchlightning.ai/index.html

  3. Django: Django是一个基于Python的Web应用程序框架。Django框架采用了MTV(Model-Template-View)的设计模式,通过模型层、视图层和模板层的分离,使得开发者可以更加方便地进行Web应用程序的开发和管理。Django框架是一个非常强大、灵活和易用的Web应用程序框架,具有良好的安全性、可扩展性和可维护性,适用于各种规模的Web应用程序的开发和管理。并且社区很活跃,可以算是Java中的Spring了。

    https://www.djangoproject.com/

  4. FastAPI: FastAPI是一个基于Python的高性能Web框架,具有快速、易用、自动文档化等特点。通过FastAPI框架,我们可以快速将机器学习模型部署为REST API,并支持自动化文档生成、类型注释和数据验证等功能。FastAPI框架具有非常好的性能和可扩展性,适用于大规模的机器学习模型部署。

    https://fastapi.tiangolo.com/

将机器学习模型封装成REST API是一种常见的部署模型的方式,可以方便地进行模型调用和管理。以上是一些常用的开源框架,可以根据具体的需求和场景选择合适的框架进行使用。

相关文章:

机器学习实战六步法之训练模型、优化模型、部署模型(七)

要落地一个机器学习的项目,是有章可循的,通过这六个步骤,小白也能搞定机器学习。 看我闪电六连鞭!🤣 训练模型 当确定好机器学习算法之后,就可以通过训练数据集中的特征和标签,根据样本数据的…...

《C++高级编程》读书笔记(七:内存管理)

1、参考引用 C高级编程(第4版,C17标准)马克葛瑞格尔 2、建议先看《21天学通C》 这本书入门,笔记链接如下 21天学通C读书笔记(文章链接汇总) 1. 使用动态内存 1.1 如何描绘内存 在本书中,内存单…...

Scrum团队的三个角色

Scrum团队中包括三个角色,他们分别是产品负责人、开发团队和 Scrum Master。 Scrum 团队是自组织、跨职能的完整团队。自组织团队决定如何最好地完成他们的工作,而不是由团队外的其他人来指挥他 们。 跨职能的团队拥有完成工作所需要的全部技能,不需要依赖团队外部…...

python环境中使用 requirement.txt 安装依赖

在 Python 项目中,我们通常使用 requirement.txt 文件记录项目所依赖的第三方库,以便在其他机器上部署项目时更方便地安装这些依赖。在使用 requirement.txt 安装依赖时,可以按照以下步骤进行: 安装 pip 要使用 requirement.txt…...

UE5 材质常用大全

名称快捷方式类别计算方式/简介用法/说明Contant1+鼠标左键基础常量定义浮点数,与多通道运算时,自动影响多通道。各种基础参数Constant2Vector2+鼠标左键基础常量2维向量,2通道,影响2个通道。R/G,用于调整UVConstant3Vector3+鼠标左键基础常量3维向量,3通道,影响3个通道R…...

笔记本安装centos操作系统

一、下载centos镜像 centos官方历史版本:Index of / 常用的镜像文件类型介绍: DVD ISO:普通光盘完整安装版镜像,可离线安装到计算机硬盘上,包含大量的常用软件(一般选择这种jing)。 Everythi…...

Polarion工作流插件(自定义)

创建插件命名插件配置插件Condition&Function package com.polarion.capital.example.conditions;import com.polarion.alm.tracker.model.IWorkItem; import com.polarion.alm.tracker.workflow.IArguments; import com.polarion.alm.tracker.workflow.ICallContext; impo…...

JavaScript库:jQuery,简化编程

1. jQuery介绍 官方网站 : https://jquery.com jQuery 是一个 JavaScript 库 。极大地简化了 JavaScript 编程,例如 JS 原生代码几十行 实现的功 能, jQuery 可能一两行就可以实现,因此得到前端程序猿广泛应用。 发展至今&#xff0…...

[springboot]菜鸟学习- JdbcTemplate用法浅尝

JdbcTemplate 是 Spring Framework 提供的一个非常强大的 JDBC 工具类,它可以显著简化 JDBC 编程的代码量,并提供了许多便捷的方法来执行 SQL 查询、更新等操作。 使用 JdbcTemplate 的步骤如下: 1. 创建 JdbcTemplate 对象:可以…...

11.无监督学习之主成分分析

11.1 降维 降维的两种应用:一是数据压缩;二是可视化数据。 11.1.1 数据压缩 将相关性强的两个特征导致冗余,可以直接去掉其中一个特征,或者将两个特征进行某种转换,得到一个特征。 11.1.2 可视化数据 直接看数据可…...

「HTML和CSS入门指南」figcaption 标签详解

什么是 figcaption 标签? 在 HTML 中,figcaption 标签用于为与 figure 元素相关的媒体内容提供说明性文本。通常用于包含图像、音频或视频等媒体元素的说明文本。 figcaption 标签的基本语法 以下是 figcaption 标签的基本语法: <figure><!-- 在这里放置您的媒体…...

电子企业实施数字化工厂建设之前,需要注意哪些

随着工业4.0时代的到来&#xff0c;数字化工厂建设已成为越来越多电子企业的重要议题。数字化工厂管理系统能够提高生产效率、降低成本、提高产品质量等多个方面的优势&#xff0c;对于企业的可持续发展具有重要意义。然而&#xff0c;在实施电子企业数字化工厂建设之前&#x…...

迅捷pdf实现多页插入

之前我们使用福昕阅读器实现了在每一页插入logo 这里我们用迅捷pdf再来一次&#xff0c;别问&#xff0c;问就是公司买了会员 首先声明&#xff0c;这里已经有会员了&#xff0c;所以不知道别人操作是不是需要会员&#xff0c;担心的话可以看看上一篇福昕阅读器版本 打开编辑…...

调用阿里云API实现证件照生成

目录 1. 作者介绍2. 算法介绍2.1 阿里云介绍2.2 证件照生成背景2.3 图像分割算法 3.调用阿里云API进行证件照生成实例3.1 准备工作3.2 实验代码3.3 实验结果与分析 参考&#xff08;可供参考的链接和引用文献&#xff09; 1. 作者介绍 王逸腾&#xff0c;男&#xff0c;西安工…...

PHP 转换 excel中读取的时间

首先&#xff0c;我们需要知道PHPExcel的时间和日期格式是以Excel内部的“1900年1月1日”为基础&#xff0c;以天为单位来计算的。即Excel日期与PHP时间戳之间存在一个时间偏移量。通过查阅PHPExcel的官方文档&#xff0c;我们可以得到以下的计算公式&#xff1a; // 读取exce…...

Cmake工具的简单使用

引言 本篇文章讲述如何简单的使用cmake工具构建一个项目&#xff0c;帮助入门的c新手学会如何使用cmake. 我们在Clion新创建一个项目时&#xff0c;会发现&#xff0c;除了main.cpp文件之外&#xff0c;还存在一个build-debug目录和一个CMakelists.txt文件&#xff0c;如图: …...

html选择器

基本选择器 基本选择器 : 标签选择器 , 类选择器 , ID选择器 标签选择器 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEed…...

Leetcode 剑指 Offer II 030. 插入、删除和随机访问都是 O(1) 的容器

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 设计一个支持在平均 时间复杂度 O(1) 下&#xff0c;执行以下操作…...

django实现读取数据导出生成excel表格

目录 一、简单示例&#xff1a; 1.创建文件对象&#xff1a; 2.添加工作表&#xff1a; 3.写入数据&#xff1a; 二、实践出真理 需要先安装xlwt模块 pip install -i https://pypi.douban.com/simple xlwt一、简单示例&#xff1a; import xlwt# 创建一个Excel文件对象 …...

DevOps系列文章之 Docker-compose

一&#xff0c;Docker-compose全集 1&#xff0c;Docker-compose简介 Docker-Compose项目是Docker官方的开源项目&#xff0c;负责实现对Docker容器集群的快速编排。 Docker-Compose将所管理的容器分为三层&#xff0c;分别是工程&#xff08;project&#xff09;&#xff0c…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...