模型训练基本概念-赛博炼丹

文章目录

    • 拓展知识
    • 基础名词解释(语义库更新)
    • 机器学习任务流程
    • 模型训练基本流程
    • 模型训练详细流程
    • 正向传播与反向传播
      • 正向传播-求误差值
      • 反向传播-求参数值
    • 学习率
    • 激活函数
      • 激活函数-为什么希望激活函数输出均值为0?
      • 激活函数 — softmax & tanh
      • 激活函数 — ReLU(MVP:简单粗暴)
      • 激活函数 — Swish(ReLU进阶版,用的最多)
    • 损失函数
      • 损失函数 — MSE & MAE
      • 损失函数 — 交叉熵损失
    • 输出函数
    • 优化器-梯度函数
  • 初步总结

拓展知识

理想情况下,我们希望模型能够学习到数据的内在规律和结构,以便在未见过的数据上进行准确的预测或分类。

  • 模型训练最终获得的产出就是模型结构+一批权重参数和阈值集合
  • 模型训练和应用都需要计算-算力
  • 模型最终训练效果无法被解释推理过程和推理依据。

实际上大多数情况是黑盒训练,配置好激活函数,损失函数等参数,扔进去数据,模型自动根据配置调权重参数和阈值等。
通俗理解
自监督学习-暴力出奇迹:自监督硬找文本规律,基于庞大的数据量实现的”过拟合“行为,互联网全部数据都是训练集那么拟合训练集就变成正确的事情了。
硬找文本规律训练语言理解能力,文本挖坑硬填训练语言生成能力。

相当于背过全网知识,基于存量知识再拼接总结生成
AIGC技术的核心思想是利用人工智能算法生成具有一定创意和质量的内容。通过训练模型和大量数据的学习,AIGC可以根据输入的条件或指导,生成与之相关的内容。例如,通过输入关键词、描述或样本,AIGC可以生成与之相匹配的文章、图像、音频等。

发展障碍
硬件和能源决定大模型发展上限。
实际上核心问题:显卡-算力
理论上最终上限是能源上限,目前是算力限制(伪垄断导致,沙子有的是显卡随便造,算力应该是没有上限的)。
硬件架构:能源(电能)+内存(大模型架构)+显卡(算力)

在这里插入图片描述
通用模型的局限性
ChatGPT数据来源都是公网,因此只能解决通用公众问题,要想建立解决业务问题模型需要用公司内部数据训练专用模型
因此若公司想建立专用模型,需要各自搭建训练专属模型。

基础名词解释(语义库更新)

在这里插入图片描述

样本:一条数据例子;
特征:被观测对象的可测量特性,例如西瓜的颜色、瓜蒂、纹路、敲击声等;
特征向量:用一个 d 维向量表征一个样本的所有或部分特征;(ax,by,cz,…,zn);

1、 一个维度就是一个特征,维度越多,变量越多,未知参数越多,事物特征被分析的越彻底。
2、将具体的事物拆分为d维特征向量就是数据标注。

标签(label)/真实值:样本特征对应的真实类型或者真实取值,即正确答案;
数据集(dataset):多条样本组成的集合;
训练集(train):用于训练模型的数据集合;
评估集(eval):用于在训练过程中周期性评估模型效果的数据集合;
测试集(test):用于在训练完成后评估最终模型效果的数据集合;

训练集和评估集是训练模型时用的数据集,分别起学习和验证的作用。

模型:可以从数据中学习到的,可以实现特定功能/映射的函数;
误差/损失:样本真实值与预测值之间的误差.;
预测值:样本输入模型后输出的结果;
模型训练:使用训练数据集对模型参数进行迭代更新的过程;
模型收敛:任意输入样本对应的预测结果与真实标签之间的误差稳定;
模型评估:使用测试数据和评估指标对训练完成的模型的效果进行评估的过程;
模型推理/预测:使用训练好的模型对数据进行预测的过程;
模型部署:使用服务加载训练好的模型,对外提供推理服务;

机器学习任务流程

注意事项:

  • 数据集分类是随机分配
  • ChatGPT的出现极大的释放了数据标注的人工量。

在这里插入图片描述

模型训练基本流程

1、数据标注
简单来说:数据标注就是将具体事物拆分为多维度变量值(瓜茎卷曲程度:0.8,瓜皮颜色:0.6,瓜尺寸:0.9),代入模型(ax+by+cz=甜|酸)中能够求解出参数值(各个维度的权重值对于正确答案的影响)。

特征:被观测对象的可测量特性,例如西瓜的颜色、瓜蒂、纹路、敲击声等;
特征向量:用一个 d 维向量表征一个样本的所有或部分特征;(ax,by,cz,…,zn);

总结
1、一个维度就是一个特征,维度越多,未知参数越多,事物特征被分析的越彻底。
2、将具体的事物拆分为d维特征向量就是数据标注。

2、总训练集分为多个Batch size。
3、求和(权重参数*特征变量值)=预测值。
4、训练完之后根据真实值和预测值的Loss函数评估,不断调试不断更新参数。
模型参数一开始是随机生成的或者用已有可参考参数值。

Loss函数:衡量真实值和预测值误差到底是多少损失值(量化)
在这里插入图片描述
在这里插入图片描述

模型训练详细流程

batch_size:一次性输入到模型的样本条数(上图是batch_size=1的情况)。
batch_size大小决定GPU的消耗情况。

Batch size 是一次向模型输入的数据数量,Batch size 越大,模型一次处理的数据量越大,能够更快的运行完一个Epoch,反之运行完一个Epoch更慢。
由于模型一次是根据一个 Batch size 的数据计算 Loss,然后更新模型参数,如果Batch size 过小,单个 Batch 可能与整个数据的分布有较大差异,会带来较大的噪声,导致模型难以收敛(特例的影响)
与此同时,Batch size 越大,模型单个 Step 加载的数据量越大,对于 GPU 显存的占用也越大,当 GPU 显存不够充足的情况下,较大的 Batch size 会导致 OOM(内存溢出),因此,需要针对实际的硬件情况,设置合理的 Batch size 取值。

总结:Batch size越大越好
在合理范围内,更大的 Batch size 能够:

  • 提高内存利用率,提高并行化效率;
  • 一个 Epoch 所需的迭代次数变少,减少训练时间;
  • 梯度计算更加稳定,训练曲线更平滑,下降方向更准,能够取得更好的效果;

对于传统模型,在较多场景中,较小的 Batch size 能够取得更好的模型性能;
对于大模型,往往更大的 Batch size 能够取得更好的性能。
Batch size中样本类型比例应该尽量切合Epoch的分布比例。

在这里插入图片描述

每一层layer其实是相同结构的模型,上一层分析样本后下一层更加递进分析上一层的分析结果(特征向量)。

在这里插入图片描述

1、模型结构设置
#设置神经网络结构,各层顺序相连
model = tf.keras.models.Sequential([
#下面把每个输入的图片数据展平,从28*28变为784*1的形式
 tf.keras.layers.Flatten(input_shape=(28, 28)),
#下面是一个全连接层,128个节点,激活函数采用Relu 
 tf.keras.layers.Dense(128, activation=tf.nn.relu),
# 下面让20%的节点无效,不与下一层连接
 tf.keras.layers.Dropout(0.2),
# 下面是一个全连接层,10个节点,激活函数采用softmax 
 tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])

2、主要训练参数
#编译模型(为模型选择优化器、目标函数和性能评价指标) 
model.compile(
 optimizer='adam',
 loss='sparse_categorical_crossentropy',
 metrics=['accuracy'])
#训练模型-训练集
model = model.fit(x_train, y_train, epochs=1)
#评估模型正确率-评估集
model.evaluate(x_test, y_test)

Keras中的常用层举例

  • Flatten层
    用来将输入“压平”,即把多维的输入一维化,常用在数据输入或从卷积层到全连接层的过渡。
  • Dense层(全连接层)
    对上一层的神经元进行全部连接,实现特征的非线性组合。跟下一层的神经元也是全连接的。
  • Activation层
    激活层对一个层的输出施加激活函数。 在Keras中使⽤激活对象有两种方法: ⼀是单独定义⼀个激活层;二是在前置层里面通过激活选项来定义所需的激活函数。
  • Dropout层
    为输入数据施加Dropout。Dropout在训练过程中每次更新参数时随机断开一定百分比(rate)的输入神经元,用于防止过拟合

Compile参数

  • loss:损失函数,或称目标函数,是神经网络中的性能函数,优化的目标是使损失函数最小化。具体取值在tf.keras.losses中
  • optimizer:优化器,主要是各种梯度下降算法,优化的目标是使loss最小,具体取值在tf.keras.optimizers中
  • metrics:评价指标,确定使用哪些指标展现模型的性能,具体取值在tf.keras.metrics中

正向传播与反向传播

正向传播-求误差值

Loss函数:衡量真实值和预测值误差到底是多少损失值(量化)
求和(权重参数*特征变量值)=预测值。

Loss函数计算得出真实值和预测值的正数误差后(平方,绝对值),接下来要做的就是将误差L降低为最小,有请梯度函数。

在这里插入图片描述

反向传播-求参数值

梯度:梯度是一个向量(矢量),函数在一点处沿着该点的梯度方向变化最快,变化率最大
换而言之,自变量沿着梯度方向变化,能够使因变量(函数值)变化最大。

实际就是求导找到本次Batch size所形成的损失函数的最小值对应的Wn参数值。

在这里插入图片描述
偏导数单独求解每个参数w的变化。
阿尔法是学习率,决定参数w更新幅度。
更新参数w的目的是使L值获得最大程度降低。在这里插入图片描述

学习率

学习率(Learning Rate,LR)决定了模型参数的更新幅度,学习率越高,模型参数更新越激进,即相同 Loss 对模型参数产生的调整幅度越大,反之越小。

在这里插入图片描述
注意
如果学习率太小,会导致网络 loss 下降非常慢;
如果学习率太大,那么参数更新的幅度就非常大,产生振荡,导致网络收敛到局部最优点,或者 loss 不降反增。
在这里插入图片描述

激活函数

线性函数一次函数的别称,则非线性函数函数图像不是一条直线的函数。非线性函数包括指数函数、幂函数、对数函数、多项式函数等等基本初等函数以及他们组成的复合函数。
激活函数是多层神经网络的基础,保证多层网络不退化成线性网络。
在这里插入图片描述

下图为激活(起点)函数为简单变量和常数的情况, 最终y表达式还是一个线性函数。

在这里插入图片描述
线性模型的表达能力不够,激活函数使得神经网络可以逼近其他的任何非线性函数, 这样可以使得神经网络应用到更多非线性模型中。
在这里插入图片描述
在这里插入图片描述
激活函数 — sigmoid

  • sigmoid函数具有软饱和特性,在正负饱和区的梯度 都接近于0,只在0附近有比较好的激活特性;
  • sigmoid导数值最大0.25,也就是反向传播过程中,
    每层至少有75%的损失,这使得当sigmoid被用在隐藏层的时候,会导致梯度消失(一般5层之内就会产生) ;
  • 函数输出不以0为中心,也就是输出均值不为0,会导致参数更新效率降低;
  • sigmoid函数涉及指数运算,导致计算速度较慢。

在这里插入图片描述

在这里插入图片描述

激活函数-为什么希望激活函数输出均值为0?

在这里插入图片描述
均值为零说明每个激活函数节点输出值有正有负,更具备多样性,调优更加灵活有效。
在上面的参数 wi 更新公式中, 对于所有 wi 都是一样的,xi 是 i - 1 层的激活函数的输出,如果像 sigmoid 一样,输出值只有正值,那么对于第 i 层的所有 wi ,其更新方向完全一致,模型为了收敛,会走 Z 字形来逼近最优解(一会全变大,一会全变小)。
在这里插入图片描述

激活函数 — softmax & tanh

softmax
在这里插入图片描述

在这里插入图片描述

tanh
在这里插入图片描述

在这里插入图片描述

激活函数 — ReLU(MVP:简单粗暴)

在这里插入图片描述
在这里插入图片描述

  • ReLU 是一个分段线性函数,因此是非线性函数;
  • ReLU 的发明是深度学习领域最重要的突破之一;
  • ReLU 不存在梯度消失问题
  • ReLU计算成本低,收敛速度比 sigmoid 快6倍;
  • 函数输出不以0为中心,也就是输出均值不为0,会导致参数更新效率降低;

最大问题:存在 dead ReLU 问题(输入 ReLU 有负值时,ReLU 输出为0,梯度在反向传播期间无法流动,导致权重不会更新);

激活函数 — Swish(ReLU进阶版,用的最多)

在这里插入图片描述

损失函数

损失函数(loss function)就是用来度量模型的预测值f(x)与真实值Y的差异程度(损失值) 的运算函数,它是一个非负实值函数
在这里插入图片描述
损失函数仅用于模型训练阶段,得到损失值后,通过反向传播来更新参数,从而降低预 测值与真实值之间的损失值,从而提升模型性能。
整个模型训练的过程就是在通过不断更新参数,使得损失函数不断逼近全局最优点(全局最小值)
不同类型的任务会定义不同的损失函数,例如回归任务重的MAE、MSE,分类任务中的 交叉熵损失等。

损失函数 — MSE & MAE

在这里插入图片描述
均方误差(mean squared error,MSE),也叫平方损失或 L2 损失,常用在最小二乘法中,它的思想是使得各个训练点到最优拟合线的距离最小(平方和最小)。
在这里插入图片描述

平均绝对误差(Mean Absolute Error,MAE)是所有单个观测值与算术平均值的绝对值的平均,也被称为 L1 loss,常用于回归问题中。

损失函数 — 交叉熵损失

log 函数是很多损失函数中的重要组成部分,对于 log 函数,默认的底数 a 是 e,也就是损失函数中使用的 log 函数默认a>1。
在这里插入图片描述
【二分类】
在这里插入图片描述
N为batch_size的样本数,求本批batch_size的误差平均值。
其中,yi 为样本 i 的真实标签,正类为 1,负类为 0;pi 表示样本 i 预测为正类的概率。
【多分类】
在这里插入图片描述
N为batch_size的样本数,求本批batch_size的误差平均值。
其中,M 为类别数量;yic 符号函数,样本 i 真实类别等于 c 则为 1,否则为 0;预测样本 i 属于类别的预测概率.。

实例解释
二分类
假设有一个二分类任务,正类为1,负类为0,存在一个正样本A,当模型输出其为正类 的概率为0.8时,交叉熵损失为:
𝑜 = − (1 ∗ 𝑜(0.8) + 0 ∗ 𝑜(0.2)) = − 𝑜(0.8) = 0.0969
当模型输出其为正类的概率为0.5时,交叉熵损失为:
𝑜 = − (1 ∗ 𝑜(0.5) + 0 ∗ 𝑜(0.5)) = − 𝑜(0.5) = 0.3010
由此可见,当模型预测的误差越大时,交叉熵损失函数计算得到的损失越大
因为:0<x<1时,log求导值大于1,放大原本误差。
0.8-0.6<|log(0.8)-log(0.6)|
多分类
在这里插入图片描述
在这里插入图片描述
有如下的交叉熵损失计算:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对所有样本loss求平均:
在这里插入图片描述

输出函数

对于不同的分类任务,交叉熵损失函数使用不同的激活函数(sigmoid/softmax)获得概率输出:
【二分类】
使用sigmoid和softmax均可,注意在二分类中,Sigmoid函数,我们可以当作成它是对 一个类别的“建模.”,另一个相对的类别就直接通过1减去得到。而softmax函数,是对两个类别建模,同样的,得到两个类别的概率之和是1。
【单标签多分类】
交叉熵损失函数使用softmax获取概率输出(互斥输出)。
【多标签多分类】
交叉熵损失函数使用sigmoid获取概率输出。

优化器-梯度函数

优化器就是在深度学习反向传播过程中,指引损失函数(目标函数)的各个参数往正确 的方向更新合适的大小,使得更新后的各个参数让损失函数(目标函数)值不断逼近全局最小
在这里插入图片描述

初步总结

正反向传播整体流程
在这里插入图片描述

1、模型结构设置
#设置神经网络结构,各层顺序相连
model = tf.keras.models.Sequential([
#下面把每个输入的图片数据展平,从28*28变为784*1的形式
 tf.keras.layers.Flatten(input_shape=(28, 28)),
#下面是一个全连接层,128个节点,激活函数采用Relu 
 tf.keras.layers.Dense(128, activation=tf.nn.relu),
# 下面让20%的节点无效,不与下一层连接
 tf.keras.layers.Dropout(0.2),
# 下面是一个全连接层,10个节点,激活函数采用softmax 
 tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])

2、主要训练参数
#编译模型(为模型选择优化器、目标函数和性能评价指标) 
model.compile(
 optimizer='adam',
 loss='sparse_categorical_crossentropy',
 metrics=['accuracy'])
#训练模型-训练集
model = model.fit(x_train, y_train, epochs=1)
#评估模型正确率-评估集
model.evaluate(x_test, y_test)

Keras中的常用层举例

  • Flatten层
    用来将输入“压平”,即把多维的输入一维化,常用在数据输入或从卷积层到全连接层的过渡。
  • Dense层(全连接层)
    对上一层的神经元进行全部连接,实现特征的非线性组合。跟下一层的神经元也是全连接的。
  • Activation层
    激活层对一个层的输出施加激活函数。 在Keras中使⽤激活对象有两种方法: ⼀是单独定义⼀个激活层;二是在前置层里面通过激活选项来定义所需的激活函数。
  • Dropout层
    为输入数据施加Dropout。Dropout在训练过程中每次更新参数时随机断开一定百分比(rate)的输入神经元,用于防止过拟合

Compile参数

  • loss:损失函数,或称目标函数,是神经网络中的性能函数,优化的目标是使损失函数最小化。具体取值在tf.keras.losses中
  • optimizer:优化器,主要是各种梯度下降算法,优化的目标是使loss最小,具体取值在tf.keras.optimizers中
  • metrics:评价指标,确定使用哪些指标展现模型的性能,具体取值在tf.keras.metrics中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/533725.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch张量的数学运算:向量基础运算

文章目录 一、简单运算二、广播运算1.广播的基本规则2.广播操作的例子 三、运算函数 参考&#xff1a;与凤行 张量的数学运算是深度学习和科学计算中的基础。张量可以被视为一个多维数组&#xff0c;其在数学和物理学中有广泛的应用。这些运算包括但不限于加法、减法、乘法、除…

312_C++_QT表格的剪切、拷贝、粘贴,轻量化操作

:拷贝 + 粘贴 :剪切 + 粘贴 void CustomTableWidget::cut() {copy();// 获取所有选定的单元格项QList<QTableWidgetItem*> selectedItemsList

若依安装过程

文章目录 参考博客环境准备下载redisjdk1.8下载nacos 后端mysqlnacos运行npm 参考博客 https://blog.csdn.net/qq_31536117/article/details/134603862 环境准备 下载redis 参考https://redis.com.cn/redis-installation.html jdk1.8下载 参考 https://zhuanlan.zhihu.co…

新质生产力与数字化转型:驱动经济转型升级的双引擎

引言 随着时代的发展和科技的进步&#xff0c;新质生产力与数字化转型已成为当今经济转型升级的双引擎。新质生产力代表着经济发展的内在动力&#xff0c;数字化转型则为其提供了技术支撑和路径指引。本文将探讨新质生产力与数字化转型的概念&#xff0c;并分析它们对经济发展的…

读所罗门的密码笔记16_直通心智

1. 直通心智 1.1. 如今&#xff0c;科学家已经可以诱发触觉、压觉、痛觉和大约250种其他感觉 1.1.1. DARPA支持的触觉技术第一次让一位受伤的人能够用假肢和手指感知到被触碰的物体 1.1.2. 可以建立人工系统&#xff0c;来替换和弥补受损大脑的部分区域 1.1.3. 神经科学家能…

基于springboot实现医院管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现医院管理系统演示 摘要 随着信息互联网信息的飞速发展&#xff0c;医院也在创建着属于自己的管理系统。本文介绍了医院管理系统的开发全过程。通过分析企业对于医院管理系统的需求&#xff0c;创建了一个计算机管理医院管理系统的方案。文章介绍了医院管理系…

【Qt编译】ARM环境 Qt5.14.2-QtWebEngine库编译 (完整版)

ARM 编译Qt5.14.2源码 1.下载源码 下载Qt5.14.2源代码&#xff08;可根据自己的需求下载不同版本&#xff09; 下载网站&#xff1a;https://download.qt.io/new_archive/qt/5.14/5.14.2/single/ 2.相关依赖(如果需要的话) 2.1 QtWebEngine相关依赖 sudo apt-get instal…

思科模拟器——跨交换机划分vlan

参考博客 一、原理图 二、划分vlan 将Switch0的f0/1和f0/2端口划到vlan10 具体端口看自己连的端口&#xff0c;Options → Prefrences → 勾选Always Show Port Labels。Ctrl R快捷打开Prefrences。 xialin>enable //进入特权模式 xialin#configure terminal //进入全局…

Python | Leetcode Python题解之第21题合并两个有序链表

题目&#xff1a; 题解&#xff1a; class Solution:def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:prehead ListNode(-1)prev preheadwhile l1 and l2:if l1.val < l2.val:prev.next l1l1 l1.nextelse:prev.next l2l2 l2.next pr…

java算法day50 | ● 123.买卖股票的最佳时机III ● 188.买卖股票的最佳时机IV

123.买卖股票的最佳时机III 思路&#xff1a; 这道题的关键就是如何设置dp数组的状态。用五种状态表示对股票持有或售出的不同阶段。代码随想录讲解视频 class Solution {public int maxProfit(int[] prices) {int[][] dpnew int[prices.length][5];dp[0][0]0;dp[0][1]-prices…

成功解决> 错误: 无效的源发行版:17

运行项目的时候出现下面的报错&#xff1a; Execution failed for task ‘:device_info_plus:compileDebugJavaWithJavac’. 错误: 无效的源发行版&#xff1a;17 原因&#xff1a;没有设置好自己项目的JDK版本 解决&#xff1a;1.检查自己项目的JDK版本 将自己的项目改为JDK 1…

09 Php学习:数组和排序

数组概念 在PHP中&#xff0c;数组是一种复合数据类型&#xff0c;用于存储多个值。以下是关于PHP数组的详细解释&#xff1a; 索引数组&#xff1a;索引数组是最基本的数组类型&#xff0c;其中每个元素都有一个唯一的数字索引&#xff0c;从0开始递增。 关联数组&#xff…

总结C/C++中程序内存区域划分

C/C程序内存分配的几个区域&#xff1a; 1. 栈区&#xff08;stack&#xff09;&#xff1a;在执行函数时&#xff0c;函数内局部变量的存储单元都可以在栈上创建&#xff0c;函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中&#xff0c;效率很⾼…

电脑无法开机?原因分析与解决方案

电脑无法开机是一种常见的问题&#xff0c;可能会给用户带来诸多困扰。无法启动可能是由于硬件故障、软件问题或者其他未知原因引起的。在本文中&#xff0c;我们将介绍三种常见的方法来解决电脑无法开机的问题&#xff0c;以帮助用户尽快恢复正常使用。 方法1&#xff1a;检查…

c语言例题,计算1/1-1/2+1/3-1/4+1/5……+1/99-1/100的值,打印结果

例题&#xff1a;计算分式1/1-1/21/3-1/41/5……1/99-1/100的值&#xff0c;打印结果 根据题目&#xff0c;我们知道需要计算的是一个固定值&#xff0c; 先定义三个变量来当作分式里的三个值&#xff0c;变量i当作分式里的分母部分&#xff0c;通过for循环来实现分母每次循环…

vue3基础知识

网站 168张图&#xff0c;万字长文&#xff0c;手把手教你开发vue后台管理系统&#xff01;-腾讯云开发者社区-腾讯云 Overview 组件总览 | Element Plus Vue.js - 渐进式 JavaScript 框架 | Vue.js 安装 Node.js 下载直接安装&#xff0c;自动包含 npm。 Node.js — Run…

【讲解下目标追踪】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

【OpenVINO™】使用 OpenVINO™ C# API 部署 YOLOv9 目标检测和实例分割模型(下篇)

3.2 定义模型预测方法 使用 OpenVINO™ C# API 部署模型主要包括以下几个步骤&#xff1a; 初始化 OpenVINO Runtime Core读取本地模型&#xff08;将图片数据预处理方式编译到模型&#xff09;将模型编译到指定设备创建推理通道处理图像输入数据设置推理输入数据模型推理获取…

Java异常处理机制详解:多层方法调用与异常传播(day23)

1.数组下标越界 2.多个处理异常 上面这两个代码的区别就是有无 System.out.println("抛出了NumberFormatException"); System.out.println("抛出了ArrayIndexOutOfBoundsException"); 第一种是不论捕获到哪种异常&#xff0c;都只会调用e.printStack…

利用AI开源引擎:实现在消费者投诉处理中的智能分析|可本地化部署

随着消费者投诉渠道逐渐多样化&#xff0c;电话、网络等途径使得消费者的声音能够更加迅速地被职能部门所接收。然而&#xff0c;大量的投诉信息也给职能部门带来了巨大的处理压力。如何高效地从消费者投诉中抽取关键信息&#xff0c;并对这些信息进行分类和统计&#xff0c;成…