【机器学习(九)】分类和回归任务-多层感知机(Multilayer Perceptron,MLP)算法-Sentosa_DSML社区版

news2024/11/17 13:38:39

文章目录

  • 一、算法概念
  • 二、算法原理
    • (一)感知机
    • (二)多层感知机
      • 1、隐藏层
      • 2、激活函数
        • sigma函数
        • tanh函数
        • ReLU函数
      • 3、反向传播算法
  • 三、算法优缺点
    • (一)优点
    • (二)缺点
  • 四、MLP分类任务实现对比
    • (一)数据加载和样本分区
      • 1、Python代码
      • 2、Sentosa_DSML社区版
    • (二)模型训练
      • 1、Python代码
      • 2、Sentosa_DSML社区版
    • (三)模型评估和模型可视化
      • 1、Python代码
      • 2、Sentosa_DSML社区版
  • 五、MLP回归任务实现对比
    • (一)数据加载和样本分区
      • 1、Python代码
      • 2、Sentosa_DSML社区版
    • (二)模型训练
      • 1、Python代码
      • 2、Sentosa_DSML社区版
    • (三)模型评估和模型可视化
      • 1、Python代码
      • 2、Sentosa_DSML社区版
  • 六、总结

一、算法概念

什么是多层感知机?
  多层感知机 (Multilayer Perceptron,MLP) 是一种人工神经网络,由多层神经元或节点组成,这些神经元或节点以分层结构排列。它是最简单且使用最广泛的神经网络之一,尤其适用于分类和回归等监督学习任务。
  多层感知器运作的核心原理在于反向传播,是用于训练网络的关键算法。在反向传播过程中,网络通过将误差从输出层反向传播到输入层来调整其权重和偏差。这个迭代过程可以微调模型的参数,使其能够随着时间的推移做出更准确的预测。
  MLP 通常包括以下部分:
  输入层:接收输入数据并将其传递到隐藏层。输入层中的神经元数量等于输入特征的数量。
  隐藏层:由一层或多层神经元组成,用于执行计算并转换输入数据。可以调整每层  中的隐藏层和神经元的数量,以优化网络性能。
  激活函数:对隐藏层中每个神经元的输出应用非线性变换。常见的激活函数包括 Sigmoid、ReLU、tanh 等。
  输出层:网络的最终输出,例如分类标签或回归目标。输出层中的神经元数量取决于具体的数据,例如分类问题中的类别数量。
  权重和偏差:可调节参数,决定相邻层神经元之间的连接强度以及每个神经元的偏差。这些参数在训练过程中学习,以尽量减少网络预测与实际目标值之间的差异。
  损失函数:衡量网络预测与实际目标值之间的差异。MLP 的常见损失函数包括回归任务的均方误差和分类任务的交叉熵。
  MLP 使用梯度下降等优化算法反向传播进行训练,根据损失函数的梯度迭代调整权重和偏差。这个过程持续到网络收敛到一组可最小化损失函数的最佳参数。

二、算法原理

(一)感知机

  感知机由两层神经元组成,输入层接收外界信号后传递给输出层,如下图所示,
在这里插入图片描述
  感知机模型就是尝试找到一条直线,能够把所有的二元类别分离开,给定输入 x \mathbf{x} x ,权重 W \mathbf{W} W ,和偏移 b b b ,感知机输出:
o = σ ( ⟨ w , x ⟩ + b ) o=\sigma\left( \langle\mathbf{w}, \mathbf{x} \rangle+b \right) o=σ(w,x+b)
σ ( x ) = { 1   x > 0 − 1   x ≤ 0 \quad\sigma( x )=\left\{\begin{array} {l l} {{1}} & {{\mathrm{~} x > 0}} \\ {{-1}} & {{\mathrm{~} x\leq0}} \\ \end{array} \right. σ(x)={11 x>0 x0
  初始化权重向量 w 和偏置 b,然后对于分类错误的样本不断更新w和b,直到所有样本都被正确分类。等价于使用批量大小为1的梯度下降,并使用如下的损失函数:
ℓ ( y , x , w ) = max ⁡ ( 0 , − y ⟨ w , x ⟩ ) \ell( y, {\bf x}, {\bf w} )=\operatorname* {m a x} ( 0,-y \langle{\bf w}, {\bf x} \rangle) (y,x,w)=max(0,yw,x⟩)
  感知机只能产生线性分割面,感知机算法的训练过程如下。
在这里插入图片描述

(二)多层感知机

1、隐藏层

  多层感知机则是在单层神经网络的基础上引入一个或多个隐藏层,使神经网络有多个网络层,下图为两个多层感知机示意图,分别为单隐层和双隐层
在这里插入图片描述
在这里插入图片描述
  多层感知机中的隐藏层和输出层都是全连接层,输入 X ∈ R n × d X \in\mathbb{R}^{n \times d} XRn×d ,其中, n n n 是批量大小, d d d 是输入特征的数量。输出 O ∈ R n × q O \in\mathbb{R}^{n \times q} ORn×q ,其中 q q q 是输出单元的数量。
  设隐藏层有 h h h 个隐藏单元,隐藏层的输出 H H H 是通过输入 X X X 与隐藏层的权重 W h ∈ R d × h W_{h} \in\mathbb{R}^{d \times h} WhRd×h 和偏置 b h ∈ R 1 × h b_{h} \in\mathbb{R}^{1 \times h} bhR1×h 计算得到的: H = X W h + b h H=X W_{h}+b_{h} H=XWh+bh
  输出层的权重为 W o ∈ R h × q W_{o} \in\mathbb{R}^{h \times q} WoRh×q ,偏置为 b o ∈ R 1 × q b_{o} \in\mathbb{R}^{1 \times q} boR1×q 。因此,输出层的输出 O O O 为: O = H W o + b o O=H W_{o}+b_{o} O=HWo+bo
  将隐藏层的输出 H H H 代入到输出层的方程中,得到如下计算过程:
O = ( X W h + b h ) W o + b o = X W h W o + b h W o + b o O=( X W_{h}+b_{h} ) W_{o}+b_{o}=X W_{h} W_{o}+b_{h} W_{o}+b_{o} O=(XWh+bh)Wo+bo=XWhWo+bhWo+bo
  通过联立后的式子可以看出,尽管引入了隐藏层,模型的计算仍然可以视作单层神经网络,其中,权重矩阵等于 W h W o W_{h} W_{o} WhWo,偏置等于 b h W o + b o b_{h} W_{o}+b_{o} bhWo+bo
  这表示,尽管引入了隐藏层,在不采用非线性激活函数的情况下,这个设计只能等价于单层神经网络。引入隐藏层的真正意义在于通过非线性激活函数(如ReLU、Sigmoid等)来引入复杂的非线性关系,使得模型具备更强的表达能力。

2、激活函数

  激活函数是 MLP的关键组成部分。它们将非线性引入网络,使其能够对复杂问题进行建模。如果没有激活函数,无论有多少层,MLP都相当于单层线性模型。
激活函数需要具备以下几点性质:

  1. 连续并可导(允许少数点上不可导),便于利用数值优化的方法来学习网络参数
  2. 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率
  3. 激活函数的导函数的值域要在合适区间内,不能太大也不能太小,否则会影响训练的效率和稳定性
    以下列举常用的三个激活函数
sigma函数

s i g m a ( z ) = 1 1 + exp ⁡ ( − z ) sigma( z )=\frac{1} {1+\operatorname{e x p} (-z )} sigma(z)=1+exp(z)1
  sigma函数也称为 S \mathrm{S} S 型函数,可以将任何实值数映射到 0 0 0 1 1 1 之间的值。呈S形,具有明确定义的非零导数,这使其适合与反向传播算法一起使用。
在这里插入图片描述
  sigmoid函数的导数表达式为:
s i g m a ′ ( z ) = s i g m a ( z ) × ( 1 − s i g m a ( z ) ) sigma^{\prime} ( z )=sigma( z ) \times( 1-sigma ( z ) ) sigma(z)=sigma(z)×(1sigma(z))
  如下所示:
在这里插入图片描述

tanh函数

tanh ⁡ ( z ) = 1 − exp ⁡ ( − 2 z ) 1 + exp ⁡ ( − 2 z ) \operatorname{t a n h} ( z )=\frac{1-\operatorname{e x p} (-2z )} {1+\operatorname{e x p} (-2z )} tanh(z)=1+exp(2z)1exp(2z)
  双曲正切函数与逻辑函数类似,但输出值在-1和 1 1 1 之间。这种居中效果有助于加快训练期间的收敛速度。
在这里插入图片描述
  tanh导数表达式如下所示:
t a n h ′ ( z ) = 1 − tanh ⁡ 2 ( z ) tanh^{\prime} ( z)=1-\operatorname{t a n h}^{2} ( z ) tanh(z)=1tanh2(z)
  下面绘制了tanh函数的导数。当输入为0时,tanh函数的导数达到最大值1;当输入越偏离0时,tanh函数的导数越接近0。
在这里插入图片描述

ReLU函数

R e L U ( z ) = max ⁡ ( 0 , z ) \mathrm{R e L U} ( z )=\operatorname* {m a x} ( 0, z ) ReLU(z)=max(0,z)
  ReLU 函数因其简单性和有效性而被广泛应用于深度学习。如果输入值为正,则输出输入值;否则输出零。尽管 ReLU 在零处不可微,并且对于负输入具有零梯度,但它在实践中表现良好,有助于缓解梯度消失问题
在这里插入图片描述
  当输入为负数时,ReLU函数的导数为0;当输入为正数时,ReLU函数的导数为1,
  ReLU 函数的导数表达式为:
R e L U ′ ( z ) = { 1 i f   z > 0 0 i f   z ≤ 0 R e L U^{\prime} ( z )=\begin{cases} {{1}} & {{\mathrm{i f ~} z > 0}} \\ {{0}} & {{\mathrm{i f ~} z \leq0}} \\ \end{cases} ReLU(z)={10if z>0if z0
  下面绘制ReLU函数的导数,
在这里插入图片描述

3、反向传播算法

1、前向传播
  前向传播是反向传播的前提。在前向传播过程中,数据从输入层逐步传递至输出层,经过每一层的计算,最终得到预测输出。
  具体步骤如下:
  1、输入数据传递给神经网络的输入层。
  2、输入层经过一系列权重(W)和偏置(b)的线性运算,然后通过激活函数传递到隐藏层。
  3、逐层传递,直至数据到达输出层,输出层生成预测值 y ^ \hat{y} y^
  表达式如下:
y ^ = f ( W 3 ⋅ f ( W 2 ⋅ f ( W 1 ⋅ x + b 1 ) + b 2 ) + b 3 ) \hat{y}=f ( W_{3} \cdot f ( W_{2} \cdot f ( W_{1} \cdot x+b_{1} )+b_{2} )+b_{3} ) y^=f(W3f(W2f(W1x+b1)+b2)+b3)
  其中, W 1 , W 2 , W 3 W_{1}, W_{2}, W_{3} W1,W2,W3 是权重矩阵, b 1 , b 2 , b 3 b_{1}, b_{2}, b_{3} b1,b2,b3 是偏置, f ( ⋅ ) f ( \cdot) f() 是激活函数。
2、 损失函数
  在得到输出后,通过损失函数计算预测结果与真实标签之间的误差,常见的损失函数有:
  MSE(均方误差):通常用于回归问题,输出与标签之差的平方的均值。计算公式如下:
M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 MSE=\frac{1} {n} \sum_{i=1}^{n} ( y_{i}-\hat{y}_{i} )^{2} MSE=n1i=1n(yiy^i)2
  其中, y i y_{i} yi 是真实值, y ^ i \hat{y}_{i} y^i 是预测值, n n n 是样本数量。
  CE(交叉熵损失):通常用于回归问题。计算公式如下:
H ( p , q ) = − ∑ i = 1 n p ( x i ) log ⁡ q ( x i ) H(p,q)=-\sum_{i=1}^{n}p(x_{i}) \operatorname{log}q(x_{i}) H(p,q)=i=1np(xi)logq(xi)
  其中, p ( x i ) p ( x_{i} ) p(xi) 是真实分布, q ( x i ) q ( x_{i} ) q(xi) 是预测分布。
3、反向传播
  反向传播根据微积分中的链式规则,按相反的顺序从输入层遍历网络。用于权重更新,使网络输出更接近标签。
  假设有两个函数 y = f ( u ) y=f ( u ) y=f(u) u = g ( x ) u=g ( x ) u=g(x) ,根据链式法则, y y y x x x 的导数为:
∂ y ∂ x = ∂ y ∂ u ∂ u ∂ x \frac{\partial y} {\partial x}=\frac{\partial y} {\partial u} \frac{\partial u} {\partial x} xy=uyxu
  在神经网络中,损失函数 L L L 对某一层权重 W W W 的导数可以通过链式法则分解为:
∂ L ∂ W = ∂ L ∂ y ⋅ ∂ y ∂ W \frac{\partial L} {\partial W}=\frac{\partial L} {\partial y} \cdot\frac{\partial y} {\partial W} WL=yLWy
4、梯度下降
  在反向传播过程中,利用梯度下降算法来更新权重,使得损失函数的值逐渐减小。权重更新的公式为:
W ( h ) = W ( o ) − η ⋅ ∂ L ∂ W W^{(h )}=W^{( o )}-\eta\cdot\frac{\partial L} {\partial W} W(h)=W(o)ηWL
  其中, η \eta η 是学习率,决定了每次权重调整的步长大小, ∂ L ∂ W \frac{\partial L} {\partial W} WL 是损失函数相对于权重的梯度。

三、算法优缺点

(一)优点

  可以通过多个隐藏层和非线性激活函数,学习到更复杂的特征表示,从而提高模型的表达能力。
  可以用于分类、回归和聚类等各种机器学习任务,目在许多领域中取得了很好的效果。
  可以诵过并行计算和GPU加速等技术,高效地处理大规模数据集,适用于大规模深度学习应用。

(二)缺点

  参数较多,容易在训练集上过拟合,需要采取正则化、dropout等方法来缓解过拟合问题。
  通常需要大量的标记数据进行训练,并且在训练过程中需要较高的计算资源,包括内存和计算
能力。
  MLP的性能很大程度上依赖于超参数的选择。

四、MLP分类任务实现对比

(一)数据加载和样本分区

1、Python代码

from sklearn.datasets import load_iris

# 加载iris数据集
iris = load_iris()
X, y = iris['data'], iris['target']

# 样本分区
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

2、Sentosa_DSML社区版

  首先,利用数据读入中的文本算子对数据进行读取,
在这里插入图片描述
  然后连接样本分区算子划分训练集和测试集,
在这里插入图片描述
  再接类型算子,设置Feature列和Label列,
在这里插入图片描述

(二)模型训练

1、Python代码

  使用sklearn自动构建MLP模型

from sklearn.neural_network import MLPClassifier

# 定义MLP分类器模型,使用l-bfgs优化算法,隐藏层设置为100, 50,最大迭代次数200,设置tol为0.000001
mlp_clf = MLPClassifier(hidden_layer_sizes=(100, 50), max_iter=200, alpha=1e-4,
                        solver='lbfgs', tol=1e-6, random_state=42)
# 训练模型
mlp_clf.fit(X_train, y_train)

# 预测训练集和测试集
y_train_pred = mlp_clf.predict(X_train)
y_test_pred = mlp_clf.predict(X_test)

2、Sentosa_DSML社区版

  连接多层感知机分类算子,右击算子,点击运行,可以得到多层感知机分类模型。右侧进行超参数等设置,隐藏层设置为(100, 50),使用l-bfgs优化算法,最大迭代次数200,设置收敛偏差为0.000001。
在这里插入图片描述

(三)模型评估和模型可视化

1、Python代码

from sklearn.metrics import accuracy_score, precision_recall_fscore_support

# 计算训练集评估指标
accuracy_train = accuracy_score(y_train, y_train_pred)
precision_train, recall_train, f1_train, _ = precision_recall_fscore_support(y_train, y_train_pred, average='weighted')

# 计算测试集评估指标
accuracy_test = accuracy_score(y_test, y_test_pred)
precision_test, recall_test, f1_test, _ = precision_recall_fscore_support(y_test, y_test_pred, average='weighted')

# 输出训练集评估指标
print(f"Training Set Metrics:")
print(f"Accuracy: {accuracy_train * 100:.2f}%")
print(f"Weighted Precision: {precision_train:.2f}")
print(f"Weighted Recall: {recall_train:.2f}")
print(f"Weighted F1 Score: {f1_train:.2f}")

# 输出测试集评估指标
print(f"\nTest Set Metrics:")
print(f"Accuracy: {accuracy_test * 100:.2f}%")
print(f"Weighted Precision: {precision_test:.2f}")
print(f"Weighted Recall: {recall_test:.2f}")
print(f"Weighted F1 Score: {f1_test:.2f}")

from sklearn.metrics import confusion_matrix

# 计算测试集的混淆矩阵
conf_matrix = confusion_matrix(y_test, y_test_pred)

import matplotlib.pyplot as plt
from sklearn.inspection import permutation_importance

# 使用 sklearn 提供的permutation_importance方法计算特征重要性
result = permutation_importance(mlp_clf, X_test, y_test, n_repeats=10, random_state=42)

# 可视化特征重要性
plt.figure(figsize=(8, 6))
plt.barh(range(X.shape[1]), result.importances_mean, align='center')
plt.yticks(np.arange(X.shape[1]), iris['feature_names'])
plt.xlabel('Mean Importance Score')
plt.title('Permutation Feature Importance')
plt.show()

在这里插入图片描述

2、Sentosa_DSML社区版

  模型后可以连接评估算子,对模型的分类结果进行评估。算子流如下图所示,
在这里插入图片描述
  执行完成后可以得到训练集和测试集的评估,评估结果如下:
在这里插入图片描述
在这里插入图片描述
  右击模型,查看模型的模型信息,如下所示:
在这里插入图片描述

五、MLP回归任务实现对比

(一)数据加载和样本分区

1、Python代码

# 读入winequality数据集
df = pd.read_csv("D:/sentosa_ML/Sentosa_DSML/mlServer/TestData/winequality.csv")

# 将数据集划分为特征和标签
X = df.drop("quality", axis=1)  # 特征,假设标签是 "quality"
Y = df["quality"]  # 标签

# 划分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=42)

2、Sentosa_DSML社区版

  首先通过数据读入算子读取数据,
在这里插入图片描述
  中间接样本分区算子对训练集和测试集进行划分,
在这里插入图片描述
  然后接类型算子,设置Feature列和Label列,
在这里插入图片描述

(二)模型训练

1、Python代码

使用 scikit-learn 库中的多层感知机回归模型(MLPRegressor)

# 对数据进行标准化
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 定义MLP回归模型,使用l-bfgs优化算法,隐藏层设置为50,10,最大迭代次数300,设置tol为0.000001
mlp_reg = MLPRegressor(hidden_layer_sizes=(50, 10), solver='lbfgs', max_iter=300, tol=1e-6, random_state=42)

# 训练模型
mlp_reg.fit(X_train_scaled, y_train)

2、Sentosa_DSML社区版

  连接标准化算子,对数据特征进行标准化计算,并执行得到标准化模型,
在这里插入图片描述
  其次,连接多层感知机回归算子,右击执行得到多层感知机回归模型。模型训练使用l-bfgs优化算法,隐藏层设置为50,10,最大迭代次数300,设置收敛偏差为0.000001,并选择计算特征重要性等。
在这里插入图片描述

(三)模型评估和模型可视化

1、Python代码

# 训练集上的评估
y_train_pred = mlp_reg.predict(X_train_scaled)

r2_train = r2_score(y_train, y_train_pred)
mae_train = mean_absolute_error(y_train, y_train_pred)
mse_train = mean_squared_error(y_train, y_train_pred)
rmse_train = np.sqrt(mse_train)
mape_train = np.mean(np.abs((y_train - y_train_pred) / y_train)) * 100
smape_train = 100 / len(y_train) * np.sum(2 * np.abs(y_train - y_train_pred) / (np.abs(y_train) + np.abs(y_train_pred)))

# 测试集上的评估
y_test_pred = mlp_reg.predict(X_test_scaled)

r2_test = r2_score(y_test, y_test_pred)
mae_test = mean_absolute_error(y_test, y_test_pred)
mse_test = mean_squared_error(y_test, y_test_pred)
rmse_test = np.sqrt(mse_test)
mape_test = np.mean(np.abs((y_test - y_test_pred) / y_test)) * 100
smape_test = 100 / len(y_test) * np.sum(2 * np.abs(y_test - y_test_pred) / (np.abs(y_test) + np.abs(y_test_pred)))

# 输出训练集评估指标
print(f"Training Set Metrics:")
print(f"R²: {r2_train:.2f}")
print(f"MAE: {mae_train:.2f}")
print(f"MSE: {mse_train:.2f}")
print(f"RMSE: {rmse_train:.2f}")
print(f"MAPE: {mape_train:.2f}%")
print(f"SMAPE: {smape_train:.2f}%")

# 输出测试集评估指标
print(f"\nTest Set Metrics:")
print(f"R²: {r2_test:.2f}")
print(f"MAE: {mae_test:.2f}")
print(f"MSE: {mse_test:.2f}")
print(f"RMSE: {rmse_test:.2f}")
print(f"MAPE: {mape_test:.2f}%")
print(f"SMAPE: {smape_test:.2f}%")

# 计算残差
residuals = y_test - y_test_pred

# 使用 Seaborn 绘制带核密度估计的残差直方图
plt.figure(figsize=(8, 6))
sns.histplot(residuals, kde=True, bins=20)
plt.title('Residuals Histogram with KDE')
plt.xlabel('Residuals')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()

在这里插入图片描述

2、Sentosa_DSML社区版

  模型后可接评估算子,对模型的回归结果进行评估。
在这里插入图片描述
  训练集和测试集的评估结果如下所示:
在这里插入图片描述
在这里插入图片描述
  右键查看模型信息,可以得到特征重要性等可视化计算结果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、总结

  相比传统代码方式,利用Sentosa_DSML社区版完成机器学习算法的流程更加高效和自动化,传统方式需要手动编写大量代码来处理数据清洗、特征工程、模型训练与评估,而在Sentosa_DSML社区版中,这些步骤可以通过可视化界面、预构建模块和自动化流程来简化,有效的降低了技术门槛,非专业开发者也能通过拖拽和配置的方式开发应用,减少了对专业开发人员的依赖。
  Sentosa_DSML社区版提供了易于配置的算子流,减少了编写和调试代码的时间,并提升了模型开发和部署的效率,由于应用的结构更清晰,维护和更新变得更加容易,且平台通常会提供版本控制和更新功能,使得应用的持续改进更为便捷。

  为了非商业用途的科研学者、研究人员及开发者提供学习、交流及实践机器学习技术,推出了一款轻量化且完全免费的Sentosa_DSML社区版。以轻量化一键安装、平台免费使用、视频教学和社区论坛服务为主要特点,能够与其他数据科学家和机器学习爱好者交流心得,分享经验和解决问题。文章最后附上官网链接,感兴趣工具的可以直接下载使用

https://sentosa.znv.com/

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

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

相关文章

【html网页制作】国庆节日主题网页制作含js轮播(5页面附效果源码)

HTMLCSS节日国庆主题网页制作 🍔涉及知识🥤写在前面🍧一、网页主题🌳二、网页效果菜单切换效果PageA、整体页Page1、首页Page2、节日由来Page3、节日视频Page4、庆祝活动Page5、留言 🐋三、网页架构与技术3.1 脑海构思…

# linux从入门到精通(二)

linux从入门到精通(二) 一、Linux系统的安装:新建VM虚拟机 1、Linux版本的选择 1)版本选择:CentOS 6.5 【镜像一般都是xxx.iso文件】 2)为什么不选择7.x版本? 6.x的各种系统操作模式是基础…

python绘制图像

柱状图 import os# 输入想要存储图像的路径 os.chdir(D:)import matplotlib.pyplot as plt import numpy as np # 改变绘图风格 import seaborn as snssns.set(color_codesTrue)cell [gen7, xgspon, 3081GB, vettel, totalplay, other] pvalue [21, 20, 18, 13, 7, 34]width…

​​XrayGLM原理与部署

接上一篇:VisualGLM-6B——原理与部署-CSDN博客 XrayGLM技术背景与原理 XrayGLM 是一种基于 VisualGLM-6B 微调开发的多模态医学影像诊断模型,专门用于处理医学影像(如 X 光胸片)的自动诊断和报告生成任务。该模型旨在为中文医学…

第8章_索引的创建与设计原则

1. 索引的声明与使用 1.1 索引的分类 MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。 从 功能逻辑 上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。 按照 物理实现方式 ,索引可以…

医疗器械中的国产光耦合器浅析

光耦合器,也称为光隔离器,在确保医疗器械的安全性和性能方面发挥着关键作用。通过在系统的不同部分之间提供电气隔离,它们可以防止信号干扰、保护敏感元件并保护患者免受电击。近年来,国产光耦合器制造商一直在加紧生产可靠的高性…

时也命也!转念的力量(深度好文)——早读(逆天打工人爬取热门微信文章解读)

时也命也 引言Python 代码第一篇 洞见 转念的力量(深度好文)第二篇 意想不到的收入结尾 早上上交所宕机 很多股票都横成直线 我的股却跳了一下水 我怕出什么监管事故 跟着卖出去了 然后查了一下 发现是上交所被买爆了 我想了一下 服务器问题 那么能否事后…

OpenEuler配置本地yum源

0x00 服务器版本 将本地镜像传输至服务器 操作步骤如下 # 创建一个目录用于挂载光盘映像 mkdir /media/cdrom/# 将光盘映像挂载到指定目录 mount /kvm/openeuler.iso /media/cdrom/#进入Yum仓库配置目录 cd /etc/yum.repos.d/# 备份原有的 openEuler.repo 文件 mv openEuler.…

解读: 火山引擎自研vSwitch技术

最近看到一篇文章介绍火山云的网络vSwitch技术,虽然是2022年的比较老的介绍,但是对于我们看到vSwitch技术的发展还是有些参考的。下面就截取了当时火山vSwitch关心的几个问题,做了一下梳理。 背景 在云计算发展过程中,虚拟网络的…

国内光耦合器制造商如何满足特殊行业的需求

在航空航天、国防、电信等行业,对定制解决方案的需求正在增长。通用光耦合器可能并不总是适合这些专业领域的特定要求,因为这些领域必须满足独特的环境条件、尺寸限制和性能基准。国内光耦合器制造商一直在加紧努力,提供可定制的解决方案&…

从 0 到 1:互联网产品经理核心技能全解析

在互联网的浩瀚海洋中,产品经理如同领航员,决定着产品从无到有的走向和命运。从 0 到 1 打造一款互联网产品,需要产品经理具备多方面的核心技能。今天,我们就来详细解读这些关键能力。 一、洞察市场趋势 时刻关注行业动态 互联网…

AOT源码解析4.1-对输入数据和mask进行处理(Associating Objects with Transformers for Video Object Segmentation)

论文阅读 papergithub论文阅读笔记AOT源码解析1-数据集处理AOT源码解析2-encoderdecoderAOT源码解析3-模型训练AOT源码解析4.1-model主体AOT源码解析4.2-model主体AOT源码解析4.3-model主体AOT源码解析4.4-model主体AOT源码解析4.5-model主体 输入数据 VOS的数据集处理操作可…

Python基础语句教学

Python是一种高级的编程语言,由Guido van Rossum于1991年创建。它以简单易读的语法和强大的功能而闻名,被广泛用于科学计算、Web开发、数据分析等领域。 Python的应用领域广泛,可以用于开发桌面应用程序、Web应用、游戏、数据分析、人工智能等…

【中台资料】数字中台建设资料合集(Word,PPT)

目录 1 编写目的 2 背景概述 3 中台概念 4 推动企业组织模式演进 5 建设方法 6 中台内容 7 数据安全体系 8 参考资料 软件全套资料部分文档清单: 工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需…

Redis 的 Java 客户端有哪些?官方推荐哪个?

Redis 官网展示的 Java 客户端如下图所示,其中官方推荐的是标星的3个:Jedis、Redisson 和 lettuce。 Redis 的 Java 客户端中,Jedis、Lettuce 和 Redisson 是最常用的三种。以下是它们的详细比较: Jedis: 线程安全&…

springboot在线教学平台

基于springbootvue实现的在线教学平台 (源码L文ppt)4-069 4.1系统结构设计 这些功能可以充分满足在线教学平台的需求。此系统功能较为全面如下图系统功能结构如图4-1所示。 图4-1功能结构图 4.2系统功能模块设计 在线教学平台的使用者主要有二类…

AI视频技术:引领影视剧拍摄的未来

大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 当科技遇见艺术,一场视听盛宴正…

华为GaussDB数据库之Yukon安装与使用

一、Yukon简介 Yukon(禹贡),基于openGauss、PostgreSQL、GaussDB数据库扩展地理空间数据的存储和管理能力,提供专业的GIS(Geographic Information System)功能,赋能传统关系型数据库。 Yukon 支…

破局汽车智能化浪潮:Tire 1供应商的网络优化与升级策略

在汽车行业经历电动化、智能化的深刻变革中,Tier 1供应商正面临着前所未有的挑战与机遇。Tier 1 供应商,即一级供应商,是汽车产业链中占据关键地位的合作伙伴。这类供应商不仅直接向整车制造商提供核心总成和模块,还深度参与整车的…

ISSCC 34.8 用于AI边缘设备的22nm,31.2TFLOPS/W,16Mb ReRAM存内浮点计算架构

本文将分享存内浮点计算前沿论文——ISSCC 2024《34.8 A 22nm 16Mb Floating-Point ReRAM Compute-in-Memory Macro with 31.2TFLOPS/W for AI Edge Devices》。下面将从文章基本信息、创新点解析、芯片测试与对比及未来展望四个部分展开介绍。 基本信息介绍 1、研究背景及面临…