【人工智能】-- 反向传播

2a20c54b85e042bfa2440367ae4807e9.gif

https://blog.csdn.net/2302_76516899?spm=1000.2115.3001.5343

个人主页:欢迎来到 Papicatch的博客

 课设专栏 :学生成绩管理系统

专业知识专栏: 专业知识 

文章目录

🍉引言

🍉反向传播

🍈定义

🍈反向传播的作用

🍍参数优化

🍍学习复杂模式

🍍提高泛化能力

🍍构建深度网络

🍍适应大规模数据

🍈工作原理

🍈数学原理

🍈应用场景

🍍图像识别

🍍语音识别

🍍自然语言处理

🍍医疗诊断

🍍金融预测

🍈反向传播的优势

🍍强大的学习能力

🍍适应性强

🍍精度高

🍍自动化特征工程

🍈反向传播的局限性

🍍计算资源需求高

🍍梯度消失和梯度爆炸

🍍过拟合

🍍解释性差

🍍对数据质量敏感

🍈代码实现

🍍代码分析

🍉示例

🍈代码实现

🍈代码分析

🍉总结


2a20c54b85e042bfa2440367ae4807e9.gif

🍉引言

        在当今科技飞速发展的时代,人工智能已然成为了引领变革的关键力量。其中,反向传播算法作为人工智能神经网络训练的核心机制,对于推动人工智能的进步发挥着举足轻重的作用。

        回顾人工智能的发展历程,从早期的理论探索到如今广泛的实际应用,每一次的突破都离不开算法的创新与优化。而反向传播算法的出现,无疑是其中的一个重要里程碑。

        它不仅使得神经网络能够处理更为复杂和庞大的数据,还极大地提高了模型的学习能力和预测精度。然而,如同任何技术一样,反向传播算法也并非完美无缺,在实际应用中仍面临着诸多挑战和问题。

        在接下来的内容中,我们将深入探讨人工智能反向传播算法的方方面面,包括其原理、应用、优势以及局限性等,以期为读者呈现一个全面而深入的理解。

🍉反向传播

🍈定义

        反向传播(Backpropagation)是一种在人工神经网络中用于计算误差梯度并据此调整网络参数(如权重和偏置)的数学算法。

        在神经网络中,数据从输入层经过一系列隐藏层的处理,最终在输出层产生输出。然后,将输出与期望的目标值进行比较,得到误差。

        反向传播的核心在于利用微积分中的链式法则,从输出层开始,逐层向后计算误差对于每个神经元的输入的梯度。这些梯度反映了参数的微小变化对误差的影响程度。

        具体来说,对于每一个神经元,反向传播计算其输出值相对于其输入值(包括与前一层神经元连接的权重和偏置)的偏导数。这个过程从输出层开始,依次反向传播到隐藏层,直至输入层。

        通过这种方式,网络中的每一个权重和偏置都能得到一个对应的梯度值。这些梯度值用于指导如何调整权重和偏置,以减小误差,从而使得神经网络在经过多次训练迭代后,能够对新的输入数据做出更准确的预测或分类。

🍈反向传播的作用

        反向传播在人工神经网络的训练中具有极其重要的作用,主要体现在以下几个方面:

🍍参数优化

  • 神经网络的性能很大程度上取决于权重和偏置等参数的取值。反向传播通过计算误差对这些参数的梯度,为优化算法(如随机梯度下降)提供了方向和步长的信息,使得参数能够朝着减小误差的方向调整。
  • 例如,在一个用于图像识别的卷积神经网络中,通过反向传播计算出每个卷积核的权重梯度,从而调整卷积核的参数,以提高对不同图像特征的提取能力。

🍍学习复杂模式

  • 现实世界中的数据往往具有复杂的内在模式和关系。反向传播使得神经网络能够自动从大量的数据中学习到这些模式。
  • 比如在自然语言处理中,通过反向传播,网络可以学习到单词之间的语义关系、语法结构等复杂的语言模式,从而能够进行文本分类、机器翻译等任务。

🍍提高泛化能力

  • 良好的泛化能力意味着模型能够对未见过的数据做出准确的预测。反向传播在训练过程中不断调整参数,使得模型能够捕捉到数据的一般规律,而不仅仅是记住训练数据的特定细节,从而提高模型在新数据上的表现。
  • 假设一个用于预测股票价格的神经网络,通过反向传播在历史数据上进行训练,模型能够学习到影响股票价格的普遍因素,而不是仅仅适应特定时间段的价格走势,从而在新的市场情况下也能做出相对准确的预测。

🍍构建深度网络

  • 随着计算能力的提高和算法的改进,深度神经网络在处理复杂任务上表现出色。反向传播为训练深度网络提供了可行的方法,使得误差能够有效地在多层网络中传播和调整参数。
  • 例如,在图像识别的深度残差网络中,反向传播能够确保信息在多层传递过程中的准确性和有效性,从而使网络能够学习到更高级和抽象的特征。

🍍适应大规模数据

  • 当今的数据量越来越大,反向传播能够高效地处理大规模的数据训练。通过梯度计算和参数更新,网络能够从海量数据中挖掘有用的信息。
  • 像在互联网搜索引擎的排序算法中,基于反向传播的神经网络可以利用大量的用户点击数据来学习最优的排序模型,以提供更准确和相关的搜索结果。

🍈工作原理

        反向传播是一种用于训练人工神经网络的算法,其工作原理基于微积分中的链式法则。

        首先,在神经网络的前向传播阶段,输入数据通过网络的各层,经过一系列线性和非线性变换得到输出。

        假设神经网络有 L 层,对于第 ι  层的神经元,其输入为 zι  ,输出为 aι  。

        前向传播的计算过程为:

其中,ωι  是第 ι 层的权重矩阵,bι  是偏置向量,σ 是激活函数。

接下来是反向传播阶段。首先计算输出层的误差。假设损失函数为 C ,对于输出层的神经元,误差 δι  为:

其中,⊙ 表示元素相乘,σ ‘ 是激活函数的导数。

然后,从输出层开始,逐层反向计算误差。对于第 ι 层的误差 δι  ,其计算公式为:

有了误差之后,就可以计算权重和偏置的梯度。对于权重 ωι 的梯度为:

对于偏置 bι  的梯度为:

最后,根据计算得到的梯度,使用优化算法(如随机梯度下降)来更新权重和偏置:

其中,α 是学习率。

        例如,假设有一个简单的三层神经网络,输入层有两个神经元,隐藏层有三个神经元,输出层有一个神经元。在前向传播中,输入数据经过计算得到输出。然后,将输出与真实值比较得到误差。在反向传播中,先计算输出层的误差,然后根据公式依次计算隐藏层的误差,进而得到权重和偏置的梯度,进行参数更新。通过多次这样的前向传播和反向传播的迭代,网络逐渐学习到最优的参数,以提高预测的准确性。

        综上所述,反向传播通过从输出层向输入层逐层计算误差的梯度,实现了对神经网络参数的有效调整和优化。

🍈数学原理

反向传播的数学原理基于微积分中的链式法则。

考虑一个简单的多层神经网络,假设具有 L 层,第 \iota 层有 n_{\iota } 个神经元。

对于第  \iota  层的第 j 个神经元,其输入为:

其中,\alpha _{\kappa }^{l-1} 是第 l-1 层的第  \kappa 个神经元的输出,\omega _{j\kappa }^{\iota } 是连接第 l-1 层的第 \kappa 个神经元和第 l 层的第 j 个神经元的权重,b_{j}^{l} 是第 l 层的第 j 个神经元的偏置。

经过激活函数 \sigma 得到输出:

设损失函数为 C ,我们的目标是最小化这个损失函数。

在反向传播中,我们要计算损失函数对每个权重和偏置的梯度。

对于输出层(第 L 层),误差 \delta _{j}^{L} 为:

对于中间层(l<L),误差 \delta _{j}^{l} 为:

接下来计算权重和偏置的梯度:

权重 \omega_{jk}^{l} 的梯度:

偏置 b_{j}^{l} 的梯度:

        以一个具体的例子来说明。假设有一个二层神经网络,输入层有两个神经元,隐藏层有两个神经元,输出层有一个神经元。

        输入层到隐藏层的权重分别为 w_{11}^{1}=0.5w_{12}^{1}=0.3w_{21}^{1}=0.2w_{22}^{1}=0.4,隐藏层的偏置分别为:b_{1}^{1}= 0.1b_{2}^{1}= 0.2。。隐藏层到输出层的权重分别为 :w_{1}^{2}=0.6w_{2}^{2}=0.7,输出层的偏置为:b^{2}=0.3。假设输入为 x_{1}=1x_{2}=1,激活函数为 sigmoid 函数 \sigma \left ( x \right )=\frac{1}{1+e^{-x}} ,损失函数为均方误差C=\frac{1}{2}\left ( y_{target}-y \right )^{2},假设目标值 y_{target}=0.8

前向传播计算:

隐藏层的输入:

隐藏层的输出:

输出层的输入:

输出层的输出:

计算误差:

反向传播计算:

输出层的误差:

隐藏层的误差:

权重和偏置的梯度:

        通过这样的计算,可以根据梯度使用优化算法(如随机梯度下降)来更新权重和偏置,以不断优化神经网络的性能。

🍈应用场景

🍍图像识别

  • 例如人脸识别、物体检测和分类等任务。通过反向传播调整神经网络的参数,使其能够学习到不同图像的特征,从而准确识别图像中的内容。

🍍语音识别

  • 帮助模型学习语音信号的特征和模式,实现对语音的准确转录和理解。

🍍自然语言处理

  • 包括文本分类、情感分析、机器翻译等。模型可以通过反向传播理解语言的结构和语义信息。

🍍医疗诊断

  • 分析医学影像(如 X 光、CT 扫描)、预测疾病风险等。

🍍金融预测

  • 如股票价格预测、信用评估等,基于历史数据进行学习和预测。

🍈反向传播的优势

🍍强大的学习能力

  • 能够处理大规模、高维度的数据,自动提取复杂的特征和模式。

🍍适应性强

  • 可以应用于各种不同类型的任务和数据,只需适当调整网络结构和参数。

🍍精度高

  • 经过充分训练,能够达到较高的预测和分类精度。

🍍自动化特征工程

  • 无需手动设计特征,模型自身能够学习到最有效的特征表示。

🍈反向传播的局限性

🍍计算资源需求高

  • 特别是对于大型复杂的神经网络,训练过程需要大量的计算时间和内存。

🍍梯度消失和梯度爆炸

  • 在深度网络中,可能出现梯度在反向传播过程中逐渐减小为零(梯度消失)或迅速增大(梯度爆炸),导致训练困难。

🍍过拟合

  • 容易对训练数据过度拟合,导致在新数据上的表现不佳。

🍍解释性差

  • 难以解释模型是如何做出决策和生成输出的,使得其在一些对可解释性要求高的场景中应用受限。

🍍对数据质量敏感

  • 数据中的噪声和偏差可能会对训练结果产生较大影响。

🍈代码实现

import numpy as npclass NeuralNetwork:def __init__(self, input_dim, hidden_dim, output_dim):self.input_dim = input_dimself.hidden_dim = hidden_dimself.output_dim = output_dim# 随机初始化权重self.W1 = np.random.randn(input_dim, hidden_dim)self.b1 = np.zeros(hidden_dim)self.W2 = np.random.randn(hidden_dim, output_dim)self.b2 = np.zeros(output_dim)def sigmoid(self, z):return 1 / (1 + np.exp(-z))def forward_propagation(self, X):self.z1 = np.dot(X, self.W1) + self.b1self.a1 = self.sigmoid(self.z1)self.z2 = np.dot(self.a1, self.W2) + self.b2self.a2 = self.sigmoid(self.z2)return self.a2def back_propagation(self, X, y):m = X.shape[0]# 计算输出层的误差dZ2 = self.a2 - ydW2 = np.dot(self.a1.T, dZ2) / mdb2 = np.sum(dZ2, axis=0, keepdims=True) / m# 计算隐藏层的误差dZ1 = np.dot(dZ2, self.W2.T) * (self.a1 * (1 - self.a1))dW1 = np.dot(X.T, dZ1) / mdb1 = np.sum(dZ1, axis=0, keepdims=True) / mreturn dW1, db1, dW2, db2def update_parameters(self, dW1, db1, dW2, db2, learning_rate):self.W1 -= learning_rate * dW1self.b1 -= learning_rate * db1self.W2 -= learning_rate * dW2self.b2 -= learning_rate * db2def train(self, X, y, epochs, learning_rate):for epoch in range(epochs):output = self.forward_propagation(X)dW1, db1, dW2, db2 = self.back_propagation(X, y)self.update_parameters(dW1, db1, dW2, db2, learning_rate)if epoch % 100 == 0:loss = np.mean((output - y) ** 2)print(f'Epoch {epoch}, Loss: {loss}')# 示例用法
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0], [1], [1], [0]])nn = NeuralNetwork(2, 3, 1)
nn.train(X, y, epochs=1000, learning_rate=0.1)

🍍代码分析

class NeuralNetwork:def __init__(self, input_dim, hidden_dim, output_dim):self.input_dim = input_dimself.hidden_dim = hidden_dimself.output_dim = output_dim# 随机初始化权重self.W1 = np.random.randn(input_dim, hidden_dim)self.b1 = np.zeros(hidden_dim)self.W2 = np.random.randn(hidden_dim, output_dim)self.b2 = np.zeros(output_dim)

定义了 NeuralNetwork 类,在初始化方法 __init__ 中:

  • 接收输入维度 input_dim、隐藏层维度 hidden_dim 和输出维度 output_dim 作为参数。
  • 使用 np.random.randn 随机初始化输入层到隐藏层的权重 W1 和隐藏层到输出层的权重 W2
  • 使用 np.zeros 初始化隐藏层偏置 b1 和输出层偏置 b2 为零向量。
    def sigmoid(self, z):return 1 / (1 + np.exp(-z))

定义了 sigmoid 激活函数,用于对神经元的输入进行非线性变换。

    def forward_propagation(self, X):self.z1 = np.dot(X, self.W1) + self.b1self.a1 = self.sigmoid(self.z1)self.z2 = np.dot(self.a1, self.W2) + self.b2self.a2 = self.sigmoid(self.z2)return self.a2

forward_propagation 方法实现前向传播过程:

  • 计算输入层到隐藏层的线性变换结果 z1,并通过 sigmoid 函数得到隐藏层的激活输出 a1
  • 基于 a1 计算隐藏层到输出层的线性变换结果 z2,再通过 sigmoid 函数得到输出层的激活输出 a2,并返回 a2
    def back_propagation(self, X, y):m = X.shape[0]# 计算输出层的误差dZ2 = self.a2 - ydW2 = np.dot(self.a1.T, dZ2) / mdb2 = np.sum(dZ2, axis=0, keepdims=True) / m# 计算隐藏层的误差dZ1 = np.dot(dZ2, self.W2.T) * (self.a1 * (1 - self.a1))dW1 = np.dot(X.T, dZ1) / mdb1 = np.sum(dZ1, axis=0, keepdims=True) / mreturn dW1, db1, dW2, db2

back_propagation 方法实现反向传播过程:

  • 首先获取样本数量 m
  • 计算输出层的误差 dZ2,然后根据误差计算输出层权重和偏置的梯度 dW2 和 db2
  • 通过输出层的误差计算隐藏层的误差 dZ1,进而得到隐藏层权重和偏置的梯度 dW1 和 db1,最后返回这些梯度。
    def update_parameters(self, dW1, db1, dW2, db2, learning_rate):self.W1 -= learning_rate * dW1self.b1 -= learning_rate * db1self.W2 -= learning_rate * dW2self.b2 -= learning_rate * db2

update_parameters 方法根据反向传播得到的梯度和学习率更新权重和偏置。

    def train(self, X, y, epochs, learning_rate):for epoch in range(epochs):output = self.forward_propagation(X)dW1, db1, dW2, db2 = self.back_propagation(X, y)self.update_parameters(dW1, db1, dW2, db2, learning_rate)if epoch % 100 == 0:loss = np.mean((output - y) ** 2)print(f'Epoch {epoch}, Loss: {loss}')

train 方法用于训练神经网络:

  • 在每次迭代中,进行前向传播得到输出,然后进行反向传播得到梯度,最后更新参数。
  • 每隔 100 个 epoch 计算并打印均方误差损失。
# 示例用法
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0], [1], [1], [0]])nn = NeuralNetwork(2, 3, 1)
nn.train(X, y, epochs=1000, learning_rate=0.1)

        在示例用法中,定义了输入数据 X 和目标输出 y,创建了神经网络对象 nn,并调用 train 方法进行 1000 次迭代的训练,学习率设置为 0.1。

🍉示例

🍈代码实现

import numpy as npclass NeuralNetwork:def __init__(self, input_dim, hidden_dim, output_dim):"""初始化神经网络的参数参数:input_dim (int): 输入层的维度hidden_dim (int): 隐藏层的维度output_dim (int): 输出层的维度"""self.input_dim = input_dimself.hidden_dim = hidden_dimself.output_dim = output_dim# 随机初始化权重self.W1 = np.random.randn(input_dim, hidden_dim)self.b1 = np.zeros(hidden_dim)self.W2 = np.random.randn(hidden_dim, output_dim)self.b2 = np.zeros(output_dim)def sigmoid(self, z):"""Sigmoid 激活函数参数:z (ndarray): 输入值返回:ndarray: Sigmoid 激活后的结果"""return 1 / (1 + np.exp(-z))def forward_propagation(self, X):"""前向传播参数:X (ndarray): 输入数据返回:ndarray: 前向传播的输出结果"""self.z1 = np.dot(X, self.W1) + self.b1self.a1 = self.sigmoid(self.z1)self.z2 = np.dot(self.a1, self.W2) + self.b2self.a2 = self.sigmoid(self.z2)return self.a2def back_propagation(self, X, y):"""反向传播计算梯度参数:X (ndarray): 输入数据y (ndarray): 真实标签返回:tuple: 包含隐藏层和输出层的权重和偏置梯度"""m = X.shape[0]  # 样本数量# 计算输出层的误差dZ2 = self.a2 - y  dW2 = np.dot(self.a1.T, dZ2) / mdb2 = np.sum(dZ2, axis=0, keepdims=True) / m# 计算隐藏层的误差dZ1 = np.dot(dZ2, self.W2.T) * (self.a1 * (1 - self.a1))dW1 = np.dot(X.T, dZ1) / mdb1 = np.sum(dZ1, axis=0, keepdims=True) / mreturn dW1, db1, dW2, db2def update_parameters(self, dW1, db1, dW2, db2, learning_rate):"""根据梯度更新参数参数:dW1 (ndarray): 隐藏层权重梯度db1 (ndarray): 隐藏层偏置梯度dW2 (ndarray): 输出层权重梯度db2 (ndarray): 输出层偏置梯度learning_rate (float): 学习率"""self.W1 -= learning_rate * dW1self.b1 -= learning_rate * db1self.W2 -= learning_rate * dW2self.b2 -= learning_rate * db2def train(self, X, y, epochs, learning_rate):"""训练神经网络参数:X (ndarray): 输入数据y (ndarray): 真实标签epochs (int): 训练轮数learning_rate (float): 学习率"""for epoch in range(epochs):output = self.forward_propagation(X)dW1, db1, dW2, db2 = self.back_propagation(X, y)self.update_parameters(dW1, db1, dW2, db2, learning_rate)if epoch % 100 == 0:loss = np.mean((output - y) ** 2)print(f'Epoch {epoch}, Loss: {loss}')# 示例用法
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y = np.array([[0], [1], [1], [0]])nn = NeuralNetwork(2, 3, 1)
nn.train(X, y, epochs=1000, learning_rate=0.1)

🍈代码分析

NeuralNetwork 类用于构建和训练一个简单的两层神经网络。

  • __init__ 方法初始化网络的结构和随机生成权重和偏置。
  • sigmoid 函数定义了 Sigmoid 激活函数,用于引入非线性。
  • forward_propagation 执行前向传播计算,依次计算各层的线性组合和激活输出。
  • back_propagation 进行反向传播,根据输出层的误差逐步计算各层的梯度。
  • update_parameters 依据计算得到的梯度和学习率更新权重和偏置。
  • train 方法执行训练过程,在每一轮中进行前向传播、反向传播和参数更新,并定期打印损失值。

        在示例用法中,我们定义了简单的输入数据 X 和目标标签 y,创建了神经网络对象 nn,并使用指定的学习率和训练轮数进行训练。通过观察每 100 轮的损失值,可以了解训练过程中模型的性能改进情况。

🍉总结

        反向传播是人工智能中神经网络训练的核心算法,具有至关重要的作用。

        它通过巧妙地运用微积分中的链式法则,从输出层开始,将误差逐层反向传播至输入层,从而计算出网络中各个参数(如权重和偏置)对于误差的梯度。

        反向传播的主要优势在于能够高效地优化神经网络的参数,使网络能够从大量的数据中自动学习到有用的特征和模式,从而在图像识别、语音处理、自然语言处理等众多领域取得出色的表现。

        然而,反向传播并非完美无缺。在实际应用中,它面临着一些挑战,如计算资源需求大、可能出现梯度消失或爆炸问题、容易过拟合以及模型解释性差等。

        尽管存在局限性,反向传播仍然是推动人工智能发展的关键技术之一,研究人员不断探索和改进,以克服其不足,进一步提升神经网络的性能和应用效果。

2a20c54b85e042bfa2440367ae4807e9.gif

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

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

相关文章

Qt Creator仿Visual Studio黑色主题

转自本人博客&#xff1a;Qt Creator仿Visual Studio黑色主题 1.演示 配置文件和步骤在后面&#xff0c;先看成品&#xff0c;分别是QWidget和QML的代码编写界面&#xff1a; 2. 主题配置文件 下载链接&#xff1a;QtCreator _theme_VS_dark.xml 也可以自己新建一个xml文件&…

【RHCE】转发服务器实验

1.在本地主机上操作 2.在客户端操作设置主机的IP地址为dns 3.测试,客户机是否能ping通

(pyqt5)弹窗-Token验证

前言 为了保护自己的工作成果,控制在合理的范围内使用,设计一个用于Token验证的弹窗. 代码 class TokenDialog(QDialog):def __init__(self, parentNone, login_userNone, mac_addrNone, funcNone):super(TokenDialog, self).__init__(parent)self.login_user login_userself…

手撸俄罗斯方块(五)——游戏主题

手撸俄罗斯方块&#xff08;五&#xff09;——游戏主题 当确定游戏载体&#xff08;如控制台&#xff09;后&#xff0c;界面将呈现出来。但是游戏的背景色、方块的颜色、方框颜色都应该支持扩展。 当前游戏也是如此&#xff0c;引入了 Theme 的概念&#xff0c;支持主题的扩…

雨量监测站的重要性有哪些

在全球气候变化和极端天气事件频发的背景下&#xff0c;雨量监测站成为了我们理解降水模式、预测天气变化以及制定应对措施的重要工具。 雨量监测站是一种专门用于测量和记录降水量的设施。它们通过配备高精度的雨量传感器&#xff0c;能够实时监测降雨情况&#xff0c;并提供关…

【分布式系统】CephFS文件系统之MDS接口详解

目录 一.服务端操作 1.在管理节点创建 mds 服务 2.查看各个节点的 mds 服务&#xff08;可选&#xff09; 3.创建存储池&#xff0c;启用 ceph 文件系统 4.查看mds状态&#xff0c;一个up&#xff0c;其余两个待命&#xff0c;目前的工作的是node01上的mds服务 5.创建用户…

SuperCLUE最新测评发布,360智脑大模型稳居大模型第一梯队

7月9日&#xff0c;国内权威大模型评测机构SuperCLUE发布《中文大模型基准测评2024上半年报告》&#xff0c;360智脑大模型&#xff08;360gpt2-pro&#xff09;在SuperCLUE基准6月测评中&#xff0c;取得总分72分&#xff0c;超过GPT-3.5-Turbo-0125&#xff0c;位列国内大模型…

制作一个自动养号插件的必备源代码!

随着网络社交平台的日益繁荣&#xff0c;用户对于账号的维护和运营需求也日益增长&#xff0c;在这样的背景下&#xff0c;自动养号插件应运而生&#xff0c;成为了许多用户提升账号活跃度、增加曝光量的得力助手。 然而&#xff0c;制作一个高效、稳定的自动养号插件并非易事…

免费分享:中国1KM分辨率月平均气温数据集(附下载方法)

数据简介 中国1KM分辨率月平均气温数据集为中国逐月平均温度数据&#xff0c;空间分辨率为0.0083333&#xff08;约1km&#xff09;。 数据集获取&#xff1a;根据全国2472个气象观测点数据进行插值获取&#xff0c;验证结果可信。 数据集包含的地理空间范围&#xff1a;全国…

常见摄像头模块性能对比

摄像头模块在现代电子设备与嵌入式开发中扮演着重要角色&#xff0c;从智能手机到安全监控系统&#xff0c;再到机器人视觉系统&#xff0c;它们无处不在。以下是一些常见的摄像头模块及其特点的对比&#xff1a; OV2640 分辨率&#xff1a;最高可达200万像素&#xff08;1600x…

vue3 antdv Modal通过设置内容里的容器的最小高度,让Modal能够适当的变高一些

1、当收款信息Collapse也折叠的时候&#xff0c;我们会发现Modal的高度也变成了很小。 2、我们希望高度稍微要高一些&#xff0c;这样感觉上面显示的Modal高度太小了&#xff0c;显示下面的效果。 3、初始的时候&#xff0c;想通过class或者style或者wrapClassName来实现&#…

交易员需要克服的十大心理问题

撰文&#xff1a;Koroush AK 编译&#xff1a;Chris&#xff0c;Techub News 本文来源香港Web3媒体&#xff1a;Techub News 一个交易者在交易上所犯下的最大的错误可能更多来自于心态的失衡而并非技术上的失误&#xff0c;类似的情况已经发生在了无数交易者身上。作为交易者…

linux自动化内存监控与告警

文章目录 前言一、脚本实现1. shell脚本实现2. 脚本功能概览 二、设置定时执行1. 编辑cron任务表2. 设置定时任务 三、通知结果示例总结 前言 在当今数字化与网络化日益普及的时代&#xff0c;系统管理与维护成为了确保业务连续性和数据安全的关键环节。其中&#xff0c;监控系…

MT3056 交换序列

思路&#xff1a; 与题目 MT3055 交换排列 类似 代码&#xff1a; #include <bits/stdc.h> using namespace std; const int N 1e4 10; int n, fa[N], b[N], d[N]; void init(int n) {for (int i 1; i < n; i)fa[i] i; } int find(int x) {return x fa[x] ?…

PostgreSQL 查询字段as别名驼峰大写未生效的坑

as别名驼峰大写的错误示例: select id, game_name as gameName from app_projects;运行效果: as别名驼峰大写的正确示例: select id, game_name as "gameName" from app_projects;运行效果: 代码示例:

1.10编程基础之简单排序--02:奇数单增序列

OpenJudge - 02:奇数单增序列http://noi.openjudge.cn/ch0110/02/ 描述 给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按升序输出。 输入 共2行: 第1行为 N; 第2行为 N 个正整数,其间用空格间隔。 输出 增序输出的奇数序列,数据之间以逗号间隔。数…

springboot 旅游导航系统-计算机毕业设计源码69476

目 录 第 1 章 引 言 1.1 选题背景 1.2 研究现状 1.3 论文结构安排 第 2 章 系统的需求分析 2.1 系统可行性分析 2.1.1 技术方面可行性分析 2.1.2 经济方面可行性分析 2.1.3 法律方面可行性分析 2.1.4 操作方面可行性分析 2.2 系统功能需求分析 2.3 系统性需求分析…

「解析」Cosine-Warmup 学习率策略

参考论文&#xff1a;SGDR: Stochastic Gradient Descent with Warm Restarts Bag of Tricks for Image Classification with Convolutional Neural Networks 梯度下降算法需要我们设置一个值&#xff0c;用来控制权重更新幅度&#xff0c;我们将其称之为学习率。它是控制模型学…

PP网/尼龙网检测方案居然如此高效?

硅胶套是一种由硅胶材料制成的套管&#xff0c;通常用于保护、密封或绝缘电子元件、电线、电缆等。硅胶具有优异的耐高温、耐低温、耐化学腐蚀和绝缘性能&#xff0c;因此硅胶套常被用于需要抗高温、耐磨、耐腐蚀的环境中。硅胶套的柔软性和良好的弹性使其适合于包裹各种形状的…

昇思学习打卡-14-ResNet50迁移学习

文章目录 数据集可视化预训练模型的使用部分实现 推理 迁移学习&#xff1a;在一个很大的数据集上训练得到一个预训练模型&#xff0c;然后使用该模型来初始化网络的权重参数或作为固定特征提取器应用于特定的任务中。本章学习使用的是前面学过的ResNet50&#xff0c;使用迁移学…