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

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.rhkb.cn/news/374560.html

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

相关文章

docker也能提权??内网学习第6天 rsync未授权访问覆盖 sudo(cve-2021-3156)漏洞提权 polkit漏洞利用

现在我们来说说liunx提权的操作&#xff1a;前面我们说了环境变量&#xff0c;定时任务来进行提权的操作 rsync未授权访问覆盖 我们先来说说什么是rsync rsync是数据备份工具&#xff0c;默认是开启的873端口 我们在进行远程连接的时候&#xff0c;如果它没有让我们输入账号…

Python高级(三)_正则表达式

Python高级-正则表达式 第三章 正则表达式 在开发中会有大量的字符串处理工作,其中经常会涉及到字符串格式的校验。 1、正则表达式概述 正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为regex、…

论文学习_Getafix: learning to fix bugs automatically

1. 引言 研究背景:现代生产代码库极其复杂并且不断更新。静态分析器可以帮助开发人员发现代码中的潜在问题(在本文的其余部分中称为错误),这对于在这些大型代码库中保持高代码质量是必要的。虽然通过静态分析尽早发现错误是有帮助的,但修复这些错误的问题在实践中仍然主要…

51单片机STC89C52RC——16.1 五线四相步进电机

目录 目的/效果 一&#xff0c;STC单片机模块 二&#xff0c;步进电机 2.2 什么是步进电机&#xff1f; 2.2.1 步进电机驱动板 静态参数 动态参数 2.2.2 五线四相 单相激励步进 双相激励步进 混合激励驱动 2.3 细分驱动 2.4 通过数字信号控制旋转位置和转速。 2…

第一次参加数学建模竞赛新手小白备赛经验贴

2024年暑假已经来临&#xff0c;下半年的数学建模竞赛非常多&#xff0c;许多同学可能是第一次参赛&#xff0c;对于如何准备感到迷茫和无从下手。在这种情况下&#xff0c;我们将分享一些备赛的小技巧&#xff0c;帮助大家在这个暑假更好的入门&#xff0c;即便是零基础的小白…

resistronic焊接机RMF10 RE120安装SSK10说明操作

resistronic焊接机RMF10 RE120安装SSK10说明操作

新零售起盘案例「半藏酱酒」布局路径,半藏总院分院招商模式

在当前白酒市场中&#xff0c;一款名为半藏酒的酒品以其独特的新零售模式引起了广泛关注。这种模式不同于传统销售方式&#xff0c;通过多种创新玩法&#xff0c;实现了销售与品牌推广的双重目标&#xff0c;让我们一起来看看细节。 半藏酒的分级代理制度将代理商分为两个层级&…

如何录制屏幕视频?4款软件,轻松录屏

在数字化飞速发展的时代&#xff0c;如何录制屏幕视频已经成为我们工作、学习和娱乐中不可省略的一个重要问题。无论是制作教学教程还是录制游戏视频等&#xff0c;屏幕视频录制都为我们提供了极大的便利。今天&#xff0c;就让我们一起探索如何录制屏幕视频的精彩方式&#xf…

Go 1.19.4 函数-Day 08

1. 函数概念和调用原理 1.1 基本介绍 函数是基本的代码块&#xff0c;用于执行一个任务。 Go 语言最少有个 main() 函数。 你可以通过函数来划分不同功能&#xff0c;逻辑上每个函数执行的是指定的任务。 函数声明告诉了编译器函数的名称&#xff0c;返回类型&#xff0c;和参…

单片机中有FLASH为啥还需要EEROM?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 一是EEPROM操作简单&…

Java版Flink使用指南——将消息写入到RabbitMQ的队列中

大纲 新建工程新增依赖 编码自动产生数据写入RabbitMQ 测试工程代码 在 《Java版Flink使用指南——从RabbitMQ中队列中接入消息流》一文中&#xff0c;我们介绍了如何使用Java在Flink中读取RabbitMQ中的数据&#xff0c;并将其写入日志中。本文将通过代码产生一些数据&#xf…

未解之谜----macOS版fiddler everywhere 如何将当前会话保存成一个txt文件查看

如图&#xff0c;这是win版的保存方式&#xff0c;mac上面根本没有这个按钮&#xff0c;找的很崩溃

nx软件许可优化解决方案

Nx软件介绍 来自SiemensPLM 的 NX使企业能够通过新一代数字化产品开发系统实现向产品全生命周期管理转型的目标。 NX 包含了企业中应用最广泛的集成应用套件&#xff0c;用于产品设计、工程和制造全范围的开发过程。 如今制造业所面临的挑战是&#xff0c;通过产品开发的技术创…

【数据结构】排序——快速排序

前言 本篇博客我们继续介绍一种排序——快速排序&#xff0c;让我们看看快速排序是怎么实现的 &#x1f493; 个人主页&#xff1a;小张同学zkf ⏩ 文章专栏&#xff1a;数据结构 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 ​ 目录 …

LinK3D: Linear Keypoints Representation for 3D LiDAR Point Cloud【翻译与解读】

LinK3D: Linear Keypoints Representation for 3D LiDAR Point Cloud 摘要 特征提取和匹配是许多机器人视觉任务的基本组成部分&#xff0c;如 2D 或 3D 目标检测、识别和配准。2D 特征提取和匹配已取得巨大成功。然而&#xff0c;在 3D 领域&#xff0c;当前方法由于描述性差…

Python-找客户软件

软件功能 请求代码&#xff1a; 填充表格&#xff1a; 可以search全国各个区县的所有企业信息&#xff0c;过滤手机号、查看是否续存/在业状态。方便找客户。 支持定-制-其他引-留-阮*件&#xff08;XHSS&#xff0c;DYY&#xff0c;KS&#xff0c;Bi-li*Bi-li&#xff09; V*…

HTML 标签简写和全称及其对应的中文说明和实例

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTML 标签简写及全称</title><style>…

【web前端HTML+CSS+JS】--- CSS学习笔记02

一、CSS&#xff08;层叠样式表&#xff09;介绍 1.优势 2.定义解释 如果有多个选择器共同作用的话&#xff0c;只有优先级最高那层样式决定最终的效果 二、无语义化标签 div和span&#xff1a;只起到描述的作用&#xff0c;不带任何样式 三、标签选择器 1.标签/元素选择器…

2.4G芯片开发的遥控玩具方案介绍 东莞酷得

玩具从早期的简单功能&#xff0c;到现如今各种各样的智能操作&#xff0c;发展的速度也是飞速的。随着玩具市场的逐步完善与推进&#xff0c;中国的智能玩具市场也出现了很多远程遥控玩具。遥控玩具也是从最初的有线到现在的无线&#xff0c;从地上跑的到天上飞的&#xff0c;…

N6 word2vec文本分类

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊# 前言 前言 上周学习了训练word2vec模型&#xff0c;这周进行相关实战 1. 导入所需库和设备配置 import torch import torch.nn as nn import torchvision …