【深度学习入门】深度学习基础概念与原理

*(本篇文章旨在帮助新手了解深度学习的基础概念和原理,不深入讨论算法及核心公式)

目录

一、深度学习概述

1、什么是深度学习?

2、深度学习与传统机器学习的区别

3、深度学习的应用领域

二、深度学习基本原理

1、神经网络的基本结构

(1)什么是神经网络?

(2)神经网络基本结构

2、激活函数的作用和选择

 (1)什么是激活函数?

 (2)激活函数的作用与选择

3、损失函数的定义和选择

(1)什么是损失函数

(2)损失函数的选择

4、反向传播算法的原理和应用

三、深度学习常用算法和模型

a. 卷积神经网络(CNN)

CNN的原理和应用

CNN的常用层结构和参数设置

b. 循环神经网络(RNN)

RNN的原理和应用

RNN的常用变体和参数设置

c. 生成对抗网络(GAN)

GAN的原理和应用

GAN的生成器和判别器的工作原理

d. 其他常用的深度学习模型和算法

四、深度学习实践操作

1、安装和配置深度学习工具

2、使用深度学习框架实现入门实验:PR-曲线、线性回归、卷积神经网络、GAN生成式对抗神经网络


一、深度学习概述

1、什么是深度学习?

        深度学习是机器学习中的一种基于人工神经网络的机器学习方法,其关键在于通过多层神经网络对输入数据进行逐深度学习是机器学习中的一种基于人工神经网络的机器学习方法,其关键在于通过多层神经网络对输入数据进行逐层抽象和表示学习,从而实现对复杂数据结构和非线性关系的建模。深度学习模型通常包含多个隐藏层,每个隐藏层都有许多神经元。这些神经元通过权重连接,模拟了生物神经元之间的信号传递过程。

        深度学习的目标是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字、图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。

2、深度学习与传统机器学习的区别

        深度学习和传统机器学习都是机器学习领域的重要分支,但它们在方法和应用上存在明显的区别与独特的优势。以下是它们之间的主要区别:

1. 特征提取与学习:
           - 传统机器学习:通常依赖于特征工程 (feature engineering),这意味着专家需要人为地对数据进行提炼和清洗,选择或构造最相关的特征来训练模型。
           - 深度学习:利用表示学习 (representation learning),机器学习模型自身能够从原始数据中自动学习和提取有用的特征。这种方法不需要手动选择特征、压缩维度或转换格式。

2. 数据依赖性:
           - 传统机器学习:通常需要大量的标记数据来训练模型,因为模型的性能很大程度上取决于输入的数据质量。
           - 深度学习:对于深度学习,尤其是当使用无监督学习方法时,可以处理大量未标记的数据。此外,深度网络的多层结构使其能够学习数据的多层次表示。

3. 计算资源:
           - 传统机器学习:通常需要的计算资源较少,因为它们的模型结构简单。
           - 深度学习:由于其复杂的网络结构和大量的参数,深度学习模型通常需要更多的计算资源,如GPU加速。

4. 模型解释性:
           - 传统机器学习:许多传统的机器学习算法(如决策树、支持向量机等)提供相对较高的模型解释性,因为它们的决策过程往往是直观的。
           - 深度学习:深度学习模型,尤其是深层神经网络,通常被视为“黑箱”,因为它们的内部工作机制很难解释。

5. 应用领域:
           - 传统机器学习:广泛应用于各种领域,如金融、医疗、零售等,其中特征的选择和工程是关键步骤。
           - 深度学习:由于其强大的表示学习能力,尤其在图像识别、语音识别和自然语言处理等领域表现出色。

3、深度学习的应用领域

        深度学习是人工智能的一个分支,它教神经网络学习和推理。深度学习在图像识别自然语言处理语音识别推荐系统自动驾驶汽车医疗保健欺诈检测游戏等领域都有广泛的应用  。

二、深度学习基本原理

1、神经网络的基本结构

(1)什么是神经网络?

        神经网络,又称人工神经网络 (ANN) 或模拟神经网络 (SNN),是机器学习的一个重要子领域,同时也是深度学习算法的核心。其名称和结构均受到人脑的启发,目的是模拟大脑的某些机理与机制,实现诸如图像识别、语音识别等功能。

基本组成:
        - 神经元:这是神经网络的基本单位。每个神经元接收一组输入和一个偏置值,当信号(值)到达时会乘以一个权值。如果神经元有4个输入,那么就有4个权值,这些权重可以在训练时进行调整。
        - 层:神经网络由相互连接的节点组成,也称为人工神经元,这些节点按层组织。例如,一个三层的神经网络可能包括输入层、隐藏层和输出层。

主要特点:
        1. 自我学习和改进:神经网络能够无需人工干预地自我学习和改进。它可以直接从数据中学习特征。
        2. 适应性:通过分析神经网络的结构,我们可以找到优化其性能的方法,如调整层数或节点数,或者调整网络处理输入数据的方式。
        3. 应用广泛:神经网络被广泛应用于各种领域,从图像和语音识别到预测股市等。

(2)神经网络基本结构

        神经网络的基本结构分为四大类: 标准网络循环网络卷积网络自动编码器

        标准网络(Standard Network,SN):是最基本的神经网络类型,包括感知器和前馈网络。感知器是所有神经网络的基础,并且是更复杂的神经网络的基本构建模块。它只连接一个输入神经元和一个输出神经元。前馈网络是由多个感知器组成的集合,其中包含三种基本类型的层:输入层、隐藏层和输出层。在前馈网络中,来自上一层的信号会被乘以权重并增加偏置,然后通过激活函数。前馈网络使用反向传播来迭代更新参数,直到达到理想的性能为止。

        循环网络(Recurrent Neural Network ,RNN):是一种处理序列数据的神经网络,例如自然语言处理或时间序列预测。在循环网络中,尝试识别数据中的最小单元,并将数据视为一组这样的单元进行处理。最常见的方法是将一个单词作为一个单元,并在处理句子时将句子视为一组单词。

        卷积网络(Convolutional Neural Network, CNN):是一种常用于图像识别和分类的深度学习模型。卷积网络中的卷积层可以有效地提取图像中的空间特征,并通过池化层压缩数据大小,降低模型复杂度。

        自动编码器(Autoencoder):是一种无监督学习模型,主要用于数据的特征提取和降维。自动编码器试图学习输入数据的有效表示(编码),并能够从该表示中重构原始输入数据。

2、激活函数的作用和选择

(1)什么是激活函数?

        激活函数是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。在神经元中,输入的input经过一系列加权求和后作用于另一个函数,这个函数就是这里的激活函数。类似于人类大脑中基于神经元的模型,激活函数最终决定了是否传递信号以及要发射给下一个神经元的内容。在人工神经网络中,一个节点的激活函数定义了该节点在给定的输入或输入集合下的输出。标准的计算机芯片电路可以看作是根据输入得到开(1)或关(0)输出的数字电路激活函数。 

        激活函数可以分为线性激活函数(线性方程控制输入到输出的映射,如f(x)=x等)以及非线性激活函数(非线性方程控制输入到输出的映射,比如Sigmoid、Tanh、ReLU、LReLU、PReLU、Swish 等) 。

        **注:Sigmoid、Tanh、ReLU、LReLU、PReLU、Swish都是非线性激活函数,它们都在人工神经网络中起到关键的作用。非线性激活函数如Sigmoid和Tanh可以将输入的线性组合转化为非线性输出。

        Sigmoid函数的公式为S(x)=1/(1+exp(-x)),它将输入的每个值压缩到0和1之间。但是,当输入值远离0时,Sigmoid函数的梯度将接近于0,这可能会导致在训练过程中出现梯度消失的问题。

        Tanh函数与Sigmoid函数类似,但它是零中心的,也就是说它的输出范围在-1到1之间。然而,Tanh函数也存在饱和问题。

        ReLU(Rectified Linear Unit)函数对正数原样输出,负数直接置零。它在正数区域不饱和,在负数区域硬饱和。ReLU函数计算上比Sigmoid或者Tanh更省计算量,因为不用exp,因而收敛较快。能够帮助解决sigmoid随着层数的增加梯度衰减现象。但是还是非zero-centered。

        LReLU(Leaky ReLU)是ReLU的变体,区别在于它不是将所有负值设为零,而是引入一个小的正数斜率。PReLU(Parametric ReLU)是另一个ReLU的变体,其参数化负数部分允许网络学习负数斜率的最佳值。

        Swish是一种自门控激活函数,其计算公式为f(x) = x / ( 1 + e^(-x) )。        

 (2)激活函数的作用与选择

  • Sigmoid 函数:能将输入值压缩到0和1之间,常用于二分类问题的输出层。
  • Tanh 函数:与Sigmoid类似,但输出范围是-1到1,常用于二分类问题的输出层。
  • ReLU 函数:当输入值大于0时,输出值等于输入值;当输入值小于等于0时,输出值为0。ReLU是目前最常用的激活函数之一,因为它能够缓解梯度消失问题。
  • Leaky ReLU 函数:在输入值小于0时,输出值为0.01乘以输入值;在输入值大于0时,输出值等于输入值。这种激活函数可以解决ReLU激活函数在负数区域的问题。
  • PReLU 函数:在输入值小于0时,输出值为0.2乘以输入值的绝对值;在输入值大于0时,输出值等于输入值。这种激活函数也可以解决ReLU激活函数在负数区域的问题。

3、损失函数的定义和选择

(1)什么是损失函数

        损失函数,也叫损失准则,是用来度量模型预测值与真实值之间的差异程度的一种方法。损失函数是一个非负实值函数,通常用符号L(Y, f(x))来表示,其中Y代表真实值,f(x)代表模型的预测值。损失函数越小,说明模型预测值与真实值越接近,模型的鲁棒性就越好。

(2)损失函数的选择

        损失函数在模型训练阶段发挥着重要的作用。每个批次的训练数据送入模型后,通过前向传播输出预测值,然后损失函数会计算出预测值和真实值之间的差异值,也就是损失值。得到损失值之后,模型通过反向传播去更新各个参数,以降低真实值与预测值之间的损失,使得模型生成的预测值更接近真实值,从而达到学习的目的。

        关于如何选择损失函数,需要考虑以下因素:

  1.                 回归问题:均方误差、平均绝对误差等。
  2.                 分类问题:交叉熵、对数损失等。        
  3.                 排名问题:平均精度差、有序列表挖掘的损失等 。

        选择损失函数的基本要求是衡量模型输出分布和样本标签分布之间的接近程度。此外,根据特定的预测建模问题(如分类或回归),损失函数的选择必须匹配问题的框架。例如,对于神经网络模型,输出层的参数选择也必须与所选的损失函数相适应。因此,如何选择合适的损失函数是问题抽象建模中的关键步骤。

4、反向传播算法的原理和应用

        反向传播算法,全称误差反向传播(Back-propagation, BP)算法,是神经网络发展的重大突破,也是现在众多深度学习训练方法的基础。它是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。

        该算法的基本思想包括以下步骤:
        1. 先计算每一层的状态和激活值,直到最后一层(即信号是前向传播的);
        2. 计算每一层的误差,误差的计算过程是从最后一层向前推进的(即误差是反向传播的);
        3. 计算每个神经元连接权重的梯度;
        4. 根据梯度下降法则更新参数(目标是误差变小)。迭代以上步骤,直到满足停止准则(比如相邻两次迭代的误差的差别很小)。

        在具体实施过程中,首先进行前向传播,输入数据按照从输入层到输出层的顺序,通过网络的每一层进行传递,并计算每一层的输出。然后在输出层得到预测结果后,用一个损失函数来衡量预测结果与真实标签的差异。最后开始反向传播的过程,从输出层开始,向输入层方向进行。

三、深度学习常用算法和模型

a. 卷积神经网络(CNN)

  • CNN的原理和应用

        卷积神经网络(CNN)是一种深度学习算法,主要应用于图像识别领域。CNN的价值在于其能够将大数据量的图片有效地降维成小数据量,同时保留图片的特征,这类似于人类的视觉原理。

        CNN的基本结构主要包括卷积层池化层全连接层
        1. 卷积层:这是CNN的核心部分,主要用于提取图像的特征。通过卷积操作,可以捕捉到图像中的局部特征。
        2. 池化层:其主要作用是降低数据的维度,同时保留重要的特征信息。这有助于减少网络的复杂性,提高计算效率。
        3. 全连接层:在卷积层和池化层提取并处理了图像的特征后,全连接层用于对特征进行高级处理并输出最终的分类结果。

  • CNN的常用层结构和参数设置

        卷积神经网络(CNN)的常用层结构和参数设置主要包含以下几个部分:

        1. 数据输入层:这是网络的第一层,用于接收原始图像数据。在处理原始图像数据时,通常需要进行预处理,包括去均值和归一化等操作。输入图像的尺寸通常是可以被2整除多次的像素值矩阵,常用的数字包括32,64,96,224,384和512。

        2. 卷积计算层:也被称为CONV层,是网络的核心部分,主要用于从输入图像中提取特征。这一层会通过多个不同的滤波器(或卷积核)对输入图像进行卷积操作,以提取出图像的不同特征。

        3. ReLU激励层:这一层的主要作用是对上一层输出的结果进行非线性变换,增强网络的表达能力。常用的激活函数包括ReLU、Sigmoid和Tanh等。

        4. 池化层:池化层的作用主要是降低数据的维度,同时保留重要的特征信息。常用的池化方法有Max Pooling和Average Pooling等。

        5. 全连接层:全连接层通常位于网络的最后部分,用于将之前提取并处理的特征进行高级处理并输出最终的分类结果。

        值得注意的是,CNN的设计选择和参数设定会严重影响网络的训练和表现。例如,滤波器的大小、步长以及填充方式等都需要根据具体的应用场景和需求来设定。此外,虽然很多架构的选择都是凭借直觉,而非有充分的数学论证,但这些直觉往往是基于大量的实验结果。

b. 循环神经网络(RNN)

  • RNN的原理和应用

        循环神经网络(Recurrent Neural Network,RNN)是深度学习中的一种主流模型,特别适用于处理序列数据的任务。其核心原理在于,RNN具有记忆能力,能够捕捉并使用序列中的时序信息,因此可以对序列数据进行有效的建模。

        RNN的结构特点是,网络会对序列中的每个元素进行处理,并将结果传递给下一个元素。同时,RNN还会将自身的输出作为输入,结合之前的输出一起处理当前的元素,这种方式使得RNN能够捕捉到时间关系和依赖性信息。

        RNN的主要应用包括自然语言处理、时间序列预测和语音识别等领域。例如,在自然语言处理任务中,RNN可以用于词性标注、命名实体识别等;在时间序列预测中,RNN可以用于预测股票价格、天气变化等;在语音识别中,RNN可以用于将语音信号转换为文本。

  • RNN的常用变体和参数设置

        RNN的常用变体主要包括长短期记忆网络(Long Short-Term Memory,LSTM)和门控循环单元(Gated Recurrent Unit,GRU)。LSTM通过引入门机制解决了RNN的长期依赖问题,而GRU则通过减少参数数量和模型复杂度,同时保持了较好的性能。

        在参数设置方面,我们需要关注三个重要的超参数:学习率、批次大小和迭代次数。学习率决定了权重更新的速度;批次大小影响每次训练使用的样本数;而迭代次数则决定了整个训练过程重复执行的次数。

        至于RNN的训练方法,最常用的是反向传播通过时间(Backpropagation Through Time,BPTT)。这种方法是基于时间反向传播的,因此被称为随时间反向传播。

c. 生成对抗网络(GAN)

  • GAN的原理和应用

        GAN,全称为生成对抗网络,是一种深度学习模型,它的核心原理是通过两个神经网络相互博弈学习产生数据。这两个神经网络分别是生成器判别器。生成器负责从随机噪声中生成数据,试图欺骗判别器以为是真实的数据。判别器则负责判断这些数据是真实还是由生成器生成的。在这场“博弈”中,生成器和判别器不断进行迭代优化,最终实现生成越来越逼真的数据。

        GAN的主要应用可以分为两个方面:数据生成无监督学习。在数据生成方面,GAN常用于图像生成,常用的有DCGAN、WGAN、BEGAN等。此外,由于GAN是一种无监督学习的典范,因此它在无监督学习和半监督学习领域也有广泛的应用。例如,通过GAN可以对大量的未标记数据进行学习,进而提升模型的泛化能力。

  • GAN的生成器和判别器的工作原理

        GAN的核心组件是生成器和判别器,它们在训练过程中扮演着不同的角色并且相互对抗。生成器的目标是创建看起来像真实数据的新数据,判别器的任务则是判断这些新创建的数据是否真实。

        生成器从一个随机噪声中生成数据,试图欺骗判别器以为是真实的数据。为了实现这一点,生成器会尽量最小化重构误差和正则项来学习潜在空间的分布,并使用重参数化技巧来实现可导性。

        判别器则需要判断这些生成的数据是真实的还是由生成器生成的。如果判别器不能准确地区分出真假数据,那么就说明生成器成功地创造了逼真的数据。

        在训练过程中,生成器和判别器不断进行博弈:生成器试图生成能够“欺骗”判别器的样本,判别器则努力提高其判别真假样本的准确性。通过这种方式,两者不断调整自己的参数,直到达到一个平衡点。在这个平衡点上,生成器能够生成非常逼真的样本,而判别器无法准确区分出真实样本和生成样本。这个过程可以通过多次迭代进行优化,使得生成的样本越来越逼真。

d. 其他常用的深度学习模型和算法

除了RNN、CNN和GAN,深度学习领域还有许多其他的模型和算法。例如:

        1. DBN (Deep Belief Network): 它是一种生成式神经网络,由多层隐藏层和可见层组成,并使用受限玻尔兹曼机(Restricted Boltzmann Machine)作为其隐藏层单元。尽管DBN在理解深度学习的“哲学”和“思维模式”方面很有价值,但在实际应用中,CNN和RNN等模型更为常用。

        2. RNTN (Recurrent Neural Turing Machine): 它是一种结合了RNN和Turing Machine的模型,旨在处理序列数据和记忆任务。

        3. 自动编码器 (Autoencoder): 这是一种无监督的神经网络模型,用于学习数据的压缩表示,并通过解码器重构输入数据。

        4. 全连接神经网络 (FCNN): 与CNN不同,FCNN完全连接所有的输入和输出层。它通常用于较少的维度和简单的结构。

        5. 多层感知机 (MLP): 这是最简单的深度学习模型之一,由一个或多个隐藏层和一个输出层组成。它常用于监督学习任务。

四、深度学习实践操作

1、安装和配置深度学习工具

https://download.csdn.net/download/qq_51701007/86869061?spm=1001.2014.3001.5503icon-default.png?t=N7T8https://download.csdn.net/download/qq_51701007/86869061?spm=1001.2014.3001.5503

2、使用深度学习框架实现入门实验:PR-曲线、线性回归、卷积神经网络、GAN生成式对抗神经网络

https://codeknight.blog.csdn.net/article/details/127858897icon-default.png?t=N7T8https://codeknight.blog.csdn.net/article/details/127858897

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

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

相关文章

RF自动化环境安装+自动化实例解析

RF定义: 通用型的 自动测试框架, 绝大部分的软件的的自动化系统都可以采用它。 特点: 测试数据文件(Test Data)对应一个个的测试用例。测试数据文件里面使用的功能小模块叫关键字,由测试库(T…

Vue3组件库开发 之Button(1)

需求分析: Button 组件大部分关注样式,没有交互 根本分析可以得到具体的属性列表: type:不同的样式(Default,Primary,Danger,Info,Success,Warning) plain:样式的不同展现模式boolean round:圆角boolean circle:圆形按钮,适合图标…

工具推荐 |Devv.ai — 最懂程序员的新一代 AI 搜索引擎

介绍 伴随 GPT 的出现,我们可以看到越来越多的 AI 产品,其中也不乏针对程序员做的代码生成工具。 今天介绍的这款产品是一款针对中文开发者的 AI 搜索引擎,Devv.ai 使用 Devv.ai 的使用非常简单,就是传统的搜索场景&#xff…

「简明教程」轻松掌握 MongDB 流式聚合操作

「简明教程」轻松掌握 MongDB 流式聚合操作 信息科学中的聚合是指对相关数据进行内容筛选、处理和归类并输出结果的过程。MongoDB 中的聚合是指同时对多个文档中的数据进行处理、筛选和归类并输出结果的过程。数据在聚合操作的过程中,就像是水流过一节一节的管道一…

C++ 程序文档生成器(doxygen)使用说明

程序文档,是每个程序员必看文档,在日常业务开发中,难免会封装一些组件。没有很好的组件文档,再好的组件都是废物,。因此大型业务中,文档和思维导图,两个都是必备! 一、注释风格 …

【面试合集】说说微信小程序的支付流程?

面试官:说说微信小程序的支付流程? 一、前言 微信小程序为电商类小程序,提供了非常完善、优秀、安全的支付功能 在小程序内可调用微信的API完成支付功能,方便、快捷 场景如下图所示: 用户通过分享或扫描二维码进入商…

[Python进阶] 正则表达式的验证

8.2 正则表达式的验证 正则表达式的语法很令人头疼,即使对经常使用它的人来说也是如此。由于难于读写,容易出错,所以找一种工具对正则表达式进行测试是很有必要的。 8.2.1 本地验证 通过Regex Tester这款软件可以在本地对正则表达式进行验…

机器学习算法实战案例:Informer实现多变量负荷预测

文章目录 机器学习算法实战案例系列答疑&技术交流1 实验数据集2 如何运行自己的数据集3 报错分析 机器学习算法实战案例系列 机器学习算法实战案例:确实可以封神了,时间序列预测算法最全总结! 机器学习算法实战案例:时间序列…

Linux shell编程学习笔记39:df命令

0 前言1 df命令的功能、格式和选项说明 1.1 df命令的功能1.2 df命令的格式1.3 df命令选项说明 2 df命令使用实例 2.1 df:显示主要文件系统信息2.2 df -a:显示所有文件系统信息2.3 df -t[]TYPE或--type[]TYPE:显示TYPE指定类型的文件系统信…

AIGC实战——像素卷积神经网络(PixelCNN)

AIGC实战——像素卷积神经网络 0. 前言1. PixelCNN 工作原理1.1 掩码卷积层 1.2 残差块2. 训练 PixelCNN3. PixelCNN 分析4. 使用混合分布改进 PixelCNN小结系列链接 0. 前言 像素卷积神经网络 (Pixel Convolutional Neural Network, PixelCNN) 是于 2016 年提出的一种图像生成…

LINUX基础培训九之网络管理

前言、本章学习目标 了解LINUX网络接口和主机名配置的方法熟悉网络相关的几个配置文件了解网关和路由熟悉网络相关的命令使用 一、网络IP地址配置 在Linux中配置IP地址的方法有以下这么几种: 1、图形界面配置IP地址(操作方式如Windows系统配置IP&…

机器学习:线性回归模型的原理、应用及优缺点

一、原理 线性回归是一种统计学和机器学习中常用的方法,用于建立变量之间线性关系的模型。其原理基于假设因变量(或响应变量)与自变量之间存在线性关系。 下面是线性回归模型的基本原理: 模型拟合: 通过最小二乘法&…

1、机器学习模型的工作方式

第一步,如果你是机器学习新手。 本课程所需数据集夸克网盘下载链接:https://pan.quark.cn/s/9b4e9a1246b2 提取码:uDzP 文章目录 1、简介2、决策树优化3、继续1、简介 我们将从机器学习模型如何工作以及如何使用它们的概述开始。如果你以前做过统计建模或机器学习,这可能感…

【Web】CTFSHOW 文件上传刷题记录(全)

期末考完终于可以好好学ctf了,先把这些该回顾的回顾完,直接rushjava! 目录 web151 web152 web153 web154-155 web156-159 web160 web161 web162-163 web164 web165 web166 web167 web168 web169-170 web151 如果直接上传php文…

生物制药厂污水处理需要哪些工艺设备

生物制药厂是一种特殊的工业场所,由于其生产过程中涉及的有机物较多,导致废水中含有高浓度的有机物和微生物等污染物,因此需要采用一些特殊的工艺设备来进行污水处理。本文将介绍生物制药厂污水处理中常用的工艺设备。 首先,对于生…

Java NIO (二)NIO Buffer类的重要方法(备份)

1 allocate()方法 在使用Buffer实例前,我们需要先获取Buffer子类的实例对象,并且分配内存空间。需要获取一个Buffer实例对象时,并不是使用子类的构造器来创建,而是调用子类的allocate()方法。 public class AllocateTest {static…

【FastAPI】路径参数(二)

预设值 如果你有一个接收路径参数的路径操作,但你希望预先设定可能的有效参数值,则可以使用标准的 Python Enum 类型。 导入 Enum 并创建一个继承自 str 和 Enum 的子类。通过从 str 继承,API 文档将能够知道这些值必须为 string 类型并且能…

PromptCast-时间序列预测的好文推荐

前言 这是关于大语言模型和时间序列预测结合的好文推荐,发现这篇文章,不仅idea不错和代码开源维护的不错,论文也比较详细(可能是顶刊而不是顶会,篇幅大,容易写清楚),并且关于它的Br…

STM32+HAL库驱动ADXL345传感器(SPI协议)

STM32HAL库驱动ADXL345传感器(SPI协议) ADXL345传感器简介实物STM32CubeMX配置SPI配置片选引脚配置串口配置 特别注意(重点部分)核心代码效果展示 ADXL345传感器简介 ADXL345 是 ADI 公司推出的基于 iMEMS 技术的 3 轴、数字输出加…

Spring Security- 基于角色的访问控制

基于角色 或权限 进行访问控制 hasAuthority方法 如果当前的主体具有指定的权限,则返回true,否则返回false 修改配置类 //当前登录用户 只有具备admins权限才可以访问这个路径.antMatchers("/test/index").hasAuthority("admins") 代码如下: package c…