一文入门“机器学习-参数调整”实操

作者前言:

通过向身边的同事大佬请教之后,大佬指点我把本文的宗旨从“参数调优”改成了“参数调整”。实在惭愧,暂时还没到能“调优”的水平,本文只能通过实操演示“哪些操作会对数据训练产生影响”,后续加深学习之后,再争取入门“参数调优”。

一、为什么要参数调优?

答:提升数据模型性能。

通常来说,我们选择使用的数据模型并不是万能的,它们面对不同的使用场景时,均存在一定的局限性,因此我们渴望提升模型性能,理论上无限追求“万能”模型。

数据模型的常用性能指标大致如下:

性能指标定义衡量指标影响因素
准确性
⭐⭐⭐
模型在预测或分类任务中的准确性,即模型对数据的预测或分类是否准确。- 准确率(Accuracy)
- 精确率(Precision)
- 召回率(Recall)
- F1分数(F1 Score)
- AUC-ROC
- 数据集的质量和数量
- 特征工程的效果
- 模型的选择和参数调优
泛化能力
⭐⭐⭐
模型对未见过的新数据、噪声和异常值的适应能力,即模型在新数据上的表现是否良好。- 交叉验证(Cross-Validation)
- 验证集和测试集性能
- 学习曲线(Learning Curve)
- 异常值检测能力
- 鲁棒性测试
- 数据集的多样性和代表性
- 模型的复杂度(过拟合和欠拟合)
- 正则化技术(如L1、L2正则化)
- 数据增强和数据预处理方法
训练速度
模型在训练过程中的速度,即模型在给定数据集上的训练时间。- 训练时间
- 迭代次数
- 数据集的大小和复杂度
- 模型的复杂度和参数数量
- 硬件配置(如CPU、GPU、TPU)
- 优化算法(如SGD、Adam)的选择
预测速度模型在预测或推断阶段的速度,即模型在给定数据上的预测时间。- 预测时间
- 吞吐量
- 模型的复杂度和参数数量
- 硬件配置(如CPU、GPU、TPU)
- 预测时的批处理大小(Batch Size)
模型复杂度模型的复杂度和简洁性,即模型的结构和参数数量,以及模型是否过于简单或过于复杂。- 参数数量
- 模型结构
- 计算复杂度
- 任务的复杂性和数据的特征
- 模型选择(如线性模型、决策树、神经网络)
- 正则化和剪枝技术

二、参数调优调整

切记!切记!下面所有的例子,都是仅针对单一衡量指标演示不同的case对该指标的影响,具体的衡量指标数据并非越大/小越好,评判性能好坏需要根据实际情况结合多个衡量指标共同判断!!!

通过阅读一文入门机器学习,我们知道数据模型训练的流程大致如下:

导入
训练
数据集
特征工程
数据模型

因此参数调优基本可以分为两个方向:

  • 数据集
    • 数据量
    • 数据特征
  • 数据模型
    • 模型类型
    • 模型超参数

所以下面内容均按照这两个方向来演示。

Tips

  • 在开始之前请先准备好环境
# 安装python3
# 自行搜索安装教程,我这里使用的是python3# 安装pip3
python3 -m ensurepip --upgrade# 安装机器学习常用库
pip3 install scikit-learn
pip3 install numpy

0.准确性

以经典的鸢尾花数据集为例,演示“数据集、数据模型的调整”对准确性的影响。

这里仅演示准确率这一个衡量指标,需要注意,并非准确率越高,准确性就越强(如过拟合)。

a.影响因素:数据集

在例子中,我们分3种case测试:

  • case1:相同数据模型,相同数据集,使用所有特征,使用100%数据量
  • case2:相同数据模型,相同数据集,使用所有特征,仅使用5%数据量
  • case3:相同数据模型,相同数据集,仅使用前2个特征,使用100%数据量

示例代码如下:

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target# 分割数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# case1:相同数据模型,相同数据集,使用所有特征,使用100%数据量
# 逻辑回归模型
model1 = LogisticRegression()
model1.fit(X_train, y_train)
y_pred1 = model1.predict(X_test)
# 计算分类模型准确率
accuracy1 = accuracy_score(y_test, y_pred1)# case2:相同数据模型,相同数据集,使用所有特征,仅使用5%数据量
# 逻辑回归模型
model2 = LogisticRegression()
X_train_5 = X_train[:int(0.05 * len(X_train))]
y_train_5 = y_train[:int(0.05 * len(y_train))]
model2.fit(X_train_5, y_train_5)
y_pred2 = model2.predict(X_test)
# 计算分类模型准确率
accuracy2 = accuracy_score(y_test, y_pred2)# case3:相同数据模型,相同数据集,仅使用前2个特征,使用100%数据量
# 逻辑回归模型
model3 = LogisticRegression()
X_train_subset = X_train[:, :2]
X_test_subset = X_test[:, :2]
model3.fit(X_train_subset, y_train)
y_pred3 = model3.predict(X_test_subset)
# 计算分类模型准确率
accuracy3 = accuracy_score(y_test, y_pred3)print(f"使用100%训练数据的准确率: {accuracy1:.2f}")
print(f"使用5%训练数据的准确率: {accuracy2:.2f}")
print(f"仅使用前2个特征的准确率: {accuracy3:.2f}")

执行结果:

case准确率
case1:相同数据模型,相同数据集,使用所有特征,使用100%数据量1.00
case2:相同数据模型,相同数据集,使用所有特征,仅使用5%数据量0.44
case3:相同数据模型,相同数据集,仅使用前2个特征,使用100%数据量0.82

很明显可以看出,相同数据集,不同的数据量、数据特征,均会影响准确率。

b.影响因素:数据模型

在例子中,我们分3种case测试:

  • case1:使用逻辑回归模型,相同数据集,仅使用前2个特征,使用100%数据量
  • case2:使用随机森林模型,相同数据集,仅使用前2个特征,使用100%数据量
  • case3:使用随机森林模型,相同数据集,仅使用前2个特征,使用100%数据量,进行超参数调优

Tips

  • 这里“仅使用前2个特征”是因为鸢尾花数据集这个经典的机器学习案例相对较简单(数据量小、特征少、标签有限),如果使用全部特征来训练的话,准确率直接100%了,不便于演示调整效果,因此这里限制一下特征。

示例代码如下:

import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score# 加载鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target# 分割数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 仅使用前2个特征
X_train_subset = X_train[:, :2]
X_test_subset = X_test[:, :2]# case1:逻辑回归
clf_lr = LogisticRegression(random_state=42, max_iter=200)
clf_lr.fit(X_train_subset, y_train)
y_pred_lr = clf_lr.predict(X_test_subset)
# 计算分类模型准确率
accuracy_lr = accuracy_score(y_test, y_pred_lr)# case2:随机森林
clf_rf = RandomForestClassifier(random_state=42)
clf_rf.fit(X_train_subset, y_train)
y_pred_rf = clf_rf.predict(X_test_subset)
# 计算分类模型准确率
accuracy_rf = accuracy_score(y_test, y_pred_rf)# case3:随机森林超参数调优
param_grid = {'n_estimators': [50, 100, 200],'max_depth': [None, 10, 20, 30],'min_samples_split': [2, 5, 10]
}
grid_search = GridSearchCV(estimator=RandomForestClassifier(random_state=42), param_grid=param_grid, cv=5, n_jobs=-1)
grid_search.fit(X_train_subset, y_train)
best_rf = grid_search.best_estimator_
y_pred_best_rf = best_rf.predict(X_test_subset)
# 计算分类模型准确率
accuracy_best_rf = accuracy_score(y_test, y_pred_best_rf)print(f"逻辑回归的准确率: {accuracy_lr:.2f}")
print(f"随机森林的准确率: {accuracy_rf:.2f}")
print(f"调优后的随机森林的准确率: {accuracy_best_rf:.2f}")

执行结果:

case准确率
case1:使用逻辑回归模型,相同数据集,仅使用前2个特征,使用100%数据量0.82
case2:使用随机森林模型,相同数据集,仅使用前2个特征,使用100%数据量0.73
case3:使用随机森林模型,相同数据集,仅使用前2个特征,使用100%数据量,进行超参数调优0.78

同样可以看出,数据模型的类型、数据模型的超参数均会影响准确率。

1.泛化能力

以经典的加利福尼亚房价数据集为例,演示“数据集、数据模型的调整”对泛化能力的影响,该数据集包含20640个样本,每个样本有8个特征(如房间数、人口、经纬度等)。

Tips

  • 这里仅演示“方差”这一个衡量指标,需要注意,并非方差越低,泛化能力就越强。评判一个数据模型的泛化能力通常需要综合考虑多个衡量指标。
  • 对于回归问题,常用的指标包括MSE、RMSE、MAE和R²;
  • 对于分类问题,常用的指标包括准确率、精确率、召回率、F1分数、AUC-ROC曲线和混淆矩阵。
  • 此外,交叉验证和学习曲线也是评估模型泛化能力的重要方法。通过综合这些指标,可以更全面地评估模型在未见过的数据上的表现。

a.影响因素:数据集

在例子中,我们分7种case测试:

  • case1:使用线性回归模型,相同数据集,使用所有特征,使用1000数据量
  • case2:使用线性回归模型,相同数据集,使用所有特征,使用5000数据量
  • case3:使用线性回归模型,相同数据集,使用所有特征,使用10000数据量
  • case4:使用线性回归模型,相同数据集,使用所有特征,使用20000数据量
  • case5:使用线性回归模型,相同数据集,仅使用前1个特征,使用20640数据量
  • case6:使用线性回归模型,相同数据集,仅使用前3个特征,使用20640数据量
  • case7:使用线性回归模型,相同数据集,仅使用前5个特征,使用20640数据量
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.datasets import fetch_california_housing# 加载加利福尼亚房价数据集
california = fetch_california_housing()
X = california.data
y = california.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)def train_and_evaluate(num_samples):# 线性回归模型model = LinearRegression()model.fit(X_train[:num_samples], y_train[:num_samples])y_pred = model.predict(X_test)# 计算均方误差mse = mean_squared_error(y_test, y_pred)return mse# case1、2、3、4:不同数据量的测试结果
for num_samples in [1000, 5000, 10000, 20000]:mse = train_and_evaluate(num_samples)print(f"使用 {num_samples} 条数据训练,测试集均方误差: {mse:.2f}")def train_with_features(features):# 线性回归模型model = LinearRegression()model.fit(X_train[:, :features], y_train)y_pred = model.predict(X_test[:, :features])# 计算均方误差mse = mean_squared_error(y_test, y_pred)return mse# case5、6、7:使用不同特征组合
# 不同特征组合的测试结果
for features in [1, 3, 5]:mse = train_with_features(features)print(f"使用前 {features} 个特征训练,测试集均方误差: {mse:.2f}")

执行结果:

case方差
case1:使用线性回归模型,相同数据集,使用所有特征,使用1000数据量0.60
case2:使用线性回归模型,相同数据集,使用所有特征,使用5000数据量0.55
case3:使用线性回归模型,相同数据集,使用所有特征,使用10000数据量0.55
case4:使用线性回归模型,相同数据集,使用所有特征,使用20000数据量0.56
case5:使用线性回归模型,相同数据集,仅使用前1个特征,使用20640数据量0.71
case6:使用线性回归模型,相同数据集,仅使用前3个特征,使用20640数据量0.66
case7:使用线性回归模型,相同数据集,仅使用前5个特征,使用20640数据量0.64

从数据可以看出,数据模型的数据量不同、特征不同,均会影响方差。

b.影响因素:数据模型

在例子中,我们分4种case测试:

  • case1:使用线性回归模型,相同数据集,使用所有特征,使用20640数据量
  • case2:使用决策树回归模型,相同数据集,使用所有特征,使用20640数据量
  • case3:使用随机森林回归模型,相同数据集,使用所有特征,使用20640数据量
  • case4:使用随机森林回归模型,相同数据集,使用所有特征,使用20640数据量,进行超参数调优
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor# 加载加利福尼亚房价数据集
california = fetch_california_housing()
X = california.data
y = california.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# case1、2、3:线性回归、决策树回归和随机森林回归模型
models = {'Linear Regression': LinearRegression(),'Decision Tree Regressor': DecisionTreeRegressor(),'Random Forest Regressor': RandomForestRegressor()
}# 训练和评估模型
for name, model in models.items():model.fit(X_train, y_train)y_pred = model.predict(X_test)mse = mean_squared_error(y_test, y_pred)print(f"{name} 均方误差: {mse:.2f}")# case4:超参数调优
# 定义超参数网格
param_grid = {'n_estimators': [10, 50, 100],'max_depth': [None, 10, 20, 30],'min_samples_split': [2, 5, 10]
}# 随机森林回归模型
rf = RandomForestRegressor()# 网格搜索,使用单CPU,执行很慢,建议使用下面优化的网格搜索
# grid_search = GridSearchCV(estimator=rf, param_grid=param_grid, cv=5, scoring='neg_mean_squared_error')# 网格搜索,使用所有可用的CPU
# 参数解释:
# n_jobs=-1:使用所有可用的 CPU 核心进行并行计算。
# cv=5:使用5折交叉验证来评估每个超参数组合的性能。
# scoring='neg_mean_squared_error':使用负均方误差作为评估指标,因为 GridSearchCV 期望一个越大越好的评分指标。
grid_search = GridSearchCV(estimator=rf, param_grid=param_grid, cv=5, scoring='neg_mean_squared_error', n_jobs=-1)
grid_search.fit(X_train, y_train)# 最佳超参数
best_params = grid_search.best_params_
print(f"最佳超参数: {best_params}")# 使用最佳超参数训练模型
best_rf = grid_search.best_estimator_
y_pred = best_rf.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"调优后的随机森林均方误差: {mse:.2f}")

执行结果:

case方差
case1:使用线性回归模型,相同数据集,使用所有特征,使用20640数据量0.56
case2:使用决策树回归模型,相同数据集,使用所有特征,使用20640数据量0.50
case3:使用随机森林回归模型,相同数据集,使用所有特征,使用20640数据量0.26
case4:使用随机森林回归模型,相同数据集,使用所有特征,使用20640数据量,进行超参数调优0.25

同样可以看出,数据模型的类型、数据模型的超参数均会影响方差。

2.其他性能指标

除“准确性”和“泛化能力”之外,其他性能指标并非核心指标,这里仅选取“训练速度”演示一下。

a.影响因素:数据集

数据量和数据特征对训练速度的影响比较简单易懂,通常情况下,越多越慢,所以就不在这里做演示了。

b.影响因素:数据模型

以经典的鸢尾花数据集为例,演示“数据模型类型、数据模型参数”对准确性的影响。

在例子中,我们分2种case测试:

  • case1:使用逻辑回归模型,相同数据集,使用所有特征,使用所有数据量
  • case2:使用向量机(SVM)模型,相同数据集,使用所有特征,使用所有数据量

执行以下代码:

# 导入必要的库
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.metrics import accuracy_score
import time# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)start_time_lr = time.time()
# 逻辑回归模型
model_lr = LogisticRegression()
model_lr.fit(X_train, y_train)
predictions_lr = model_lr.predict(X_test)
# 计算分类模型准确率
accuracy_lr = accuracy_score(y_test, predictions_lr)
end_time_lr = time.time()
print("逻辑回归模型准确率:", accuracy_lr)
print("逻辑回归模型训练耗时:", end_time_lr - start_time_lr, "秒")start_time_svm = time.time()
# 支持向量机(SVM)模型
model_svm = SVC(kernel='linear')
model_svm.fit(X_train, y_train)
predictions_svm = model_svm.predict(X_test)
# 计算分类模型准确率
accuracy_svm = accuracy_score(y_test, predictions_svm)
end_time_svm = time.time()
print("SVM模型准确率:", accuracy_svm)
print("SVM模型训练耗时:", end_time_svm - start_time_svm, "秒")

执行结果:

case训练耗时 (秒)
case1:使用逻辑回归模型,相同数据集,使用所有特征,使用所有数据量0.016212940216064453
case2:使用向量机(SVM)模型,相同数据集,使用所有特征,使用所有数据量0.002279996871948242

明显可以看到向量机(SVM)模型比逻辑回归模型的训练速度更快。

三、归纳

Tips

  • 准确性的实操演示,只以“准确率”这一个衡量指标做了演示;
  • 泛化能力的实操演示,只以“方差”这一个衡量指标做了演示;
  • 其他同样重要的衡量指标不在这里做演示,毕竟本文仅仅是入门文章,当读者有一定基础之后,可以自行研究其他衡量指标的实操。
调优方向调优内容调优方式补充
数据集数据量增加数据量:更多的数据通常可以帮助模型更好地学习数据的模式和规律,提高模型的准确性。当然,数据量越多准确性越高,但是训练速度也会越低,实际应用中需要酌情选择适量数据集。
特征
⭐⭐⭐
特征选择:选择最相关的特征,减少噪声和冗余特征,提高模型的准确性;
特征提取:从原始数据中提取新的特征,帮助模型更好地捕捉数据的模式;
特征转换:对特征进行变换,如标准化、归一化等,使特征更适合模型的使用。
特征选取的足够好,既能提高模型的准确性,也能提升模型的训练速度。
数据模型模型类型
⭐⭐
选择合适的模型:根据问题的性质选择合适的模型类型,如分类、回归、聚类等,以提高模型的准确性。同样,模型选取的足够好,既能提高模型的准确性,也能提升模型的训练速度。
模型参数
⭐⭐⭐
调优模型参数:通过网格搜索、随机搜索等方法调优模型的超参数,以找到最佳的参数组合,提高模型准确性;
正则化:使用正则化方法,如L1正则化、L2正则化,控制模型的复杂度,避免过拟合,提高模型的泛化能力。
本文缺少对超参数的介绍,后续会在“参数调优”的文章中补充,帮助读者入门“超参数”,感谢理解。🙏

四、寄语

在撰写本文的过程中,我深刻体会到参数调整的重要性和复杂性。虽然目前我还未达到“调优”的水平,但希望通过本文的实操演示,能帮助大家了解哪些操作会对数据训练产生影响。
机器学习的世界广阔而深邃,参数调整只是其中的一部分。希望大家在学习的过程中,不断探索和实践,逐步提升自己的技能。未来,我也会继续学习和分享更多关于“参数调优”的内容,期待与大家共同进步。

五、材料

  • 机器学习数据集库:目前维护着665个开源数据集,读者可以查看、下载、上传数据集。
  • 机器学习python库:scikit-learn:基于python的机器学习接口库,提供功能丰富的机器学习接口,如:下载数据集、训练、调参等。
  • 机器学习python库:tensorflow:基于python的机器学习接口库,通过交互式代码示例,了解如何使用直观的API。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 学习中,什么是列表,如何操作列表?

什么是列表 在Python中,列表(List)是一种内置的数据结构,用于存储一系列有序的元素。列表中的元素可以是任意类型,比如整数、字符串、浮点数,甚至是另一个列表。列表是可变的(mutable&#xff…

Android系统常见的crash分类error有那些?

Android系统常见的crash分类及其对应的error主要包括以下几类: 一、Java Application Crash Java Application Crash通常是由于Java层线程因未捕获异常而终止,由系统的void uncaughtException(Thread t, Throwable e)方法进行捕获和处理。这类crash常见…

【热部署】✈️Springboot 项目的热部署实现方式

目录 🍸前言 🍻一、热部署和手动重启 🍺二、热部署的实现 2.1 手动启动热部署 2.2 自动检测热部署 2.3 关闭热部署 💞️三、章末 🍸前言 小伙伴们大家好,书接上文,通过Springboot 中的 actu…

git clone报错RPC failed; curl 92 HTTP/2 stream 7 was not closed cleanly

问题描述 git clone github上的项目报错: RPC failed; curl 92 HTTP/2 stream 7 was not closed cleanly: CANCEL (err 8) 4796 bytes of body are still expected fetch-pack: unexpected disconnect while reading sideband packet early EOF fetch-pack: invalid index-pac…

Selenium:原理与使用指南

文章目录 简介Selenium 的原理安装 Selenium基本使用示例代码说明 常用操作查找元素交互操作等待处理弹窗 高级功能截屏执行 JavaScript切换窗口 结论 简介 Selenium 是一个用于 Web 应用程序自动化测试的强大工具。它提供了一系列库和工具,支持多种浏览器和编程语…

提升TK直播体验:使用美国直播网络的六大优势

国内有许多公司想在TikTok上进行美国直播,但由于TikTok的政策限制,在国内直接访问存在困难。然而,通过使用Ogcloud的美国直播网络,这一问题得以解决。那么,TikTok海外直播使用美国直播网络具体有哪些优势呢&#xff1f…

【懒删除堆 优先队列】1172. 餐盘栈

本文涉及知识点 懒删除堆 优先队列 LeetCode1172. 餐盘栈 我们把无限数量 ∞ 的栈排成一行,按从左到右的次序从 0 开始编号。每个栈的的最大容量 capacity 都相同。 实现一个叫「餐盘」的类 DinnerPlates: DinnerPlates(int capacity) - 给出栈的最大…

封装方法实现表格合并

封装方法 const mergeTableRow (config:any)> {let data config.dataconst {mergeColNames, // 需要合并的列firstMergeColNames, // 受影响的列firstMerge // 以哪列为基础进行合并(基准列)} configif (!mergeColNames || mergeColNames.length 0) {return data}merge…

中位数贪心,3086. 拾起 K 个 1 需要的最少行动次数

一、题目 1、题目描述 给你一个下标从 0 开始的二进制数组 nums,其长度为 n ;另给你一个 正整数 k 以及一个 非负整数 maxChanges 。 Alice 在玩一个游戏,游戏的目标是让 Alice 使用 最少 数量的 行动 次数从 nums 中拾起 k 个 1 。游戏开始…

Java基础(基于韩顺平老师的笔记)

Java基础 Java特点环境搭建Java 基础语法数据类型流程控制 数组面向对象方法重载封装多态继承 类类变量(又叫静态变量)类方法(又叫静态方法) 接口枚举常用类String日期时间 集合类泛型注解异常处理多线程IO 流反射经典面试题&…

谷歌GMS认证之安卓Android Auto认证,车机的Android Auto认证介绍,GAS跟Android Auto区别

一、Android Auto认证前言 Android Auto 是谷歌(Google)推出的一个车载平台,它允许驾驶者将他们的Android设备(如智能手机)连接到车辆的显示屏上,以便在驾驶时更安全和方便地使用某些应用程序和服务。 为…

stm32中IIC通讯协议

参考资料:大部分均引用b站江协科技课程、GPT及网络资料 什么是IIC(i2C)通讯协议? 关键字:SCL、SDA、半双工、同步、串行。 IIC(Inter-Integrated Circuit),也称为I2C(In…

不同的llm推理框架

vLLM适用于大批量Prompt输入,并对推理速度要求比较高的场景。 实际应用场景中,TensorRT-LLM通常与Triton Inference Server结合起来使用,NVIDIA官方能够提供更适合NVIDIA GPU运行的高效Kernel。 LightLLM比较轻量、易于扩展、易于上手&…

【chatgpt】 PyTorch中dtype属性,表示张量的数据类型

在 PyTorch 中,dtype 是一个属性,用于表示张量的数据类型。dtype(数据类型)决定了张量中元素的存储方式和计算方法。 常见的数据类型 PyTorch 支持多种数据类型,常见的数据类型包括: torch.float32 或 t…

Linux—KVM虚拟化中使用基本命令管理虚拟机(纯实例)

🏡作者主页:点击! 👨‍💻Linux高级管理专栏:点击! ⏰️创作时间:2024年7月2日11点11分 🀄️文章质量:94分 文章目录 前言 1.查看命令帮助 2.查看KVM 的…

c/c++语言的一种日志的编写办法

今日分享一下,从某源码中看到这种日志编写方式,很强。可以借鉴。 这个函数调用的日志函数是不一样的,仔细观看: 这几种日志输出函数,背后都调用了相同的调用。 与之对应的区别就是,函数名称的差异取决于…

mpeg格式怎么转换成mp4?这四种转换方法非常好用!

mpeg格式怎么转换成mp4?在数字视频领域中,MPEG格式算是相对冷门的一种选择,然而,选择这种格式却不是没有代价的,首先,MPEG采用了有损压缩技术,这意味着在视频处理过程中,会丢失一些细…

单个企业年收入达24.7亿!银发游学市场按下“加速键”,兴趣教育平台抢滩布局

干货抢先看 1. 银发游学市场渐趋火热,美国最大的银发游学机构Road Scholar最新披露的财报显示,上个财年公司收入达3.395亿美元(约合人民币24.7亿)。 2. 在国内,一批专注银发兴趣教育的品牌纷纷入局,拓展游…

Redis的两种持久化方案

Redis 提供了多种持久化机制来保证数据在发生意外情况下(如断电或服务器崩溃)不丢失。以下是几种主要的 Redis 持久化方案及其特点: 1. RDB (Redis Database Backup) RDB 是 Redis 创建的数据库快照,它可以将数据集快照以二进制…

MYSQL8.0配置

1、下载安装包 2、解压软件包 将MySQL软件包解压在没有中文和空格的目录下 3、设置配置文件my.ini my.ini中加入以下内容 [client] #客户端设置,即客户端默认的连接参数 # 设置mysql客户端连接服务端时默认使用的端口 port3306#默认编码 default-character-set…