深度学习 精选笔记(12)卷积神经网络-理论基础1

学习参考:

  • 动手学深度学习2.0
  • Deep-Learning-with-TensorFlow-book
  • pytorchlightning

①如有冒犯、请联系侵删。
②已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。
③非常推荐上面(学习参考)的前两个教程,在网上是开源免费的,写的很棒,不管是开始学还是复习巩固都很不错的。

深度学习回顾,专栏内容来源多个书籍笔记、在线笔记、以及自己的感想、想法,佛系更新。争取内容全面而不失重点。完结时间到了也会一直更新下去,已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。所有文章涉及的教程都会写在开头、一起学习一起进步。

推荐阅读、学习参考:

  • https://blog.csdn.net/IronmanJay/article/details/128689946
  • CNN笔记:通俗理解卷积神经网络
  • 卷积神经网络原理【十分推荐】
  • 卷积神经网络(CNN)详细介绍及其原理详解

1.从全连接层到卷积

多层感知机十分适合处理表格数据,其中行对应样本,列对应特征。 对于表格数据,寻找的模式可能涉及特征之间的交互,但是不能预先假设任何与特征交互相关的先验结构。 此时,多层感知机可能是最好的选择,然而对于高维感知数据,这种缺少结构的网络可能会变得不实用。

例如,在之前猫狗分类的例子中:假设有一个足够充分的照片数据集,数据集中是拥有标注的照片,每张照片具有百万级像素,这意味着网络的每次输入都有一百万个维度。 即使将隐藏层维度降低到1000,这个全连接层也将有 106×103=109
个参数。 想要训练这个模型将不可实现,因为需要有大量的GPU、分布式优化训练的经验和超乎常人的耐心。

1.1不变性

想象一下,假设想从一张图片中找到某个物体。 合理的假设是:无论哪种方法找到这个物体,都应该和物体的位置无关。 理想情况下,系统应该能够利用常识:猪通常不在天上飞,飞机通常不在水里游泳。 但是,如果一只猪出现在图片顶部,还是应该认出它。

可以从儿童游戏”沃尔多在哪里”中得到灵感:
在这个游戏中包含了许多充斥着活动的混乱场景,而沃尔多通常潜伏在一些不太可能的位置,读者的目标就是找出他。 尽管沃尔多的装扮很有特点,但是在眼花缭乱的场景中找到他也如大海捞针。 然而沃尔多的样子并不取决于他潜藏的地方,因此可以使用一个“沃尔多检测器”扫描图像。 该检测器将图像分割成多个区域,并为每个区域包含沃尔多的可能性打分。

卷积神经网络正是将空间不变性(spatial invariance)的这一概念系统化,从而基于这个模型使用较少的参数来学习有用的表示。

  • 平移不变性(translation invariance):不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。
  • 局部性(locality):神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系,这就是“局部性”原则。最终,可以聚合这些局部特征,以在整个图像级别进行预测。

下面探究:以上两个原则是如何转化为数学表示的。

1.2多层感知机的限制

多层感知机(MLP)作为一种人工神经网络模型,在解决许多机器学习问题上表现出色。然而,它也有一些限制,包括:

  • 需要大量数据集: MLP通常需要大量的标记数据来有效地训练模型,特别是在具有许多参数的大型网络中,过拟合是一个常见的问题。
  • 需要调优的超参数: MLP具有许多超参数,如隐藏层的数量、每层的神经元数量、学习率等,需要仔细调优才能获得最佳性能。
  • 对特征的敏感: MLP对输入数据的特征表示非常敏感,因此在训练之前可能需要对数据进行归一化或标准化,以避免不同特征值的影响不均衡。
  • 容易过拟合: 由于MLP的参数数量较多,模型很容易过拟合训练数据,特别是在没有足够正则化措施的情况下。
  • 计算资源需求高: 复杂的MLP可能需要大量的计算资源来训练,特别是当处理大规模的数据集时。
  • 非线性关系的建模: 如果数据集包含复杂的非线性关系,MLP可能需要更多的层和神经元才能很好地捕捉这些关系,增加了模型的复杂性和训练难度。
  • 黑盒模型: MLP作为深度学习模型,通常被认为是黑盒模型,难以解释其预测结果,这可能在需要透明决策过程的应用中造成一定的困扰。

多层感知机的输入是二维图像 𝐗 ,其隐藏表示 𝐇 在数学上是一个矩阵,在代码中表示为二维张量。 其中 𝐗 和 𝐇 具有相同的形状。 为了方便理解,可以认为无论是输入还是隐藏表示都拥有空间结构。

使用 [𝐗]𝑖,𝑗 和 [𝐇]𝑖,𝑗 分别表示输入图像和隐藏表示中位置( 𝑖 , 𝑗 )处的像素。 为了使每个隐藏神经元都能接收到每个输入像素的信息,将参数从权重矩阵替换为四阶权重张量 𝖶 。假设 𝐔 包含偏置参数,可以将全连接层形式化地表示为

在这里插入图片描述
其中,从 𝖶 到 𝖵 的转换只是形式上的转换,因为在这两个四阶张量的元素之间存在一一对应的关系。只需重新索引下标(𝑘,𝑙),使 𝑘=𝑖+𝑎 、 𝑙=𝑗+𝑏 ,此可得 [𝖵]𝑖,𝑗,𝑎,𝑏=[𝖶]𝑖,𝑗,𝑖+𝑎,𝑗+𝑏 。索引 𝑎 和 𝑏 通过在正偏移和负偏移之间移动覆盖了整个图像。 对于隐藏表示中任意给定位置( 𝑖 , 𝑗 )处的像素值 [𝐇]𝑖,𝑗 ,可以通过在 𝑥 中以 (𝑖,𝑗) 为中心对像素进行加权求和得到,加权使用的权重为 [𝖵]𝑖,𝑗,𝑎,𝑏 。
(1)平移不变性
引用上述的第一个原则:平移不变性。 这意味着检测对象在输入 𝐗 中的平移,应该仅导致隐藏表示 𝐇
中的平移。也就是说, 𝖵 和 𝐔 实际上不依赖于 (𝑖,𝑗) 的值,即 [𝖵]𝑖,𝑗,𝑎,𝑏=[𝐕]𝑎,𝑏 。并且 𝐔 是一个常数,比如 𝑢 。因此,可以简化 𝐇 定义为:
在这里插入图片描述

这就是卷积(convolution)。是在使用系数 [𝐕]𝑎,𝑏 对位置 (𝑖,𝑗) 附近的像素 (𝑖+𝑎,𝑗+𝑏) 进行加权得到 [𝐇]𝑖,𝑗 。 注意, [𝐕]𝑎,𝑏 的系数比 [𝖵]𝑖,𝑗,𝑎,𝑏 少很多,因为前者不再依赖于图像中的位置。这就是显著的进步!
(2)局部性

引用上述的第二个原则:局部性。如上所述,为了收集用来训练参数 [𝐇]𝑖,𝑗的相关信息,不应偏离到距 (𝑖,𝑗)很远的地方。这意味着在 |𝑎|>Δ 或 |𝑏|>Δ的范围之外,可以设置 [𝐕]𝑎,𝑏=0 。因此,可以将 [𝐇]𝑖,𝑗
重写为
在这里插入图片描述
上面该公式是一个卷积层(convolutional layer),而卷积神经网络是包含卷积层的一类特殊的神经网络。 在深度学习研究社区中, 𝐕 被称为卷积核(convolution kernel)或者滤波器(filter),亦或简单地称之为该卷积层的权重,通常该权重是可学习的参数。

1.3卷积

在数学中,两个函数(比如 𝑓,𝑔:ℝ(d)→ℝ )之间的“卷积”被定义为
在这里插入图片描述
也就是说,卷积是当把一个函数“翻转”并移位 𝐱时,测量 𝑓和 𝑔 之间的重叠。 当为离散对象时,积分就变成求和。例如,对于由索引为 ℤ 的、平方可和的、无限维向量集合中抽取的向量,得到以下定义:
在这里插入图片描述
对于二维张量,则为 𝑓 的索引 (𝑎,𝑏) 和 𝑔 的索引 (𝑖−𝑎,𝑗−𝑏)上的对应加和:
在这里插入图片描述

1.4通道

图像一般包含三个通道/三种原色(红色、绿色和蓝色)。 实际上,图像不是二维张量,而是一个由高度、宽度和颜色组成的三维张量,比如包含 1024×1024×3 个像素。 前两个轴与像素的空间位置有关,而第三个轴可以看作每个像素的多维表示。 因此,我们将 𝖷 索引为 [𝖷]𝑖,𝑗,𝑘 。由此卷积相应地调整为 [𝖵]𝑎,𝑏,𝑐 ,而不是 [𝐕]𝑎,𝑏 。

此外,由于输入图像是三维的,隐藏表示 𝖧 也最好采用三维张量。 换句话说,对于每一个空间位置,想要采用一组而不是一个隐藏表示。这样一组隐藏表示可以想象成一些互相堆叠的二维网格。 因此,可以把隐藏表示想象为一系列具有二维张量的通道(channel)。 这些通道有时也被称为特征映射(feature maps),因为每个通道都向后续层提供一组空间化的学习特征。 直观上可以想象在靠近输入的底层,一些通道专门识别边缘,而一些通道专门识别纹理。

为了支持输入 𝖷 和隐藏表示 𝖧 中的多个通道,可以在 𝖵 中添加第四个坐标,即 [𝖵]𝑎,𝑏,𝑐,𝑑 。
在这里插入图片描述
其中隐藏表示 𝖧 中的索引 𝑑 表示输出通道,而随后的输出将继续以三维张量 𝖧 作为输入进入下一个卷积层。 故而可以定义具有多个通道的卷积层,而其中 𝖵 是该卷积层的权重。

1.5总结(直接看这个)

全连接层在图像任务上的缺点:

  • 参数量过大: 全连接层会将图像中的每个像素都连接到神经网络中,导致参数量巨大。对于高分辨率的图像,这样的连接方式会引起巨大的计算和内存负担。
  • 位置信息丢失: 全连接层并不保留像素之间的位置信息,因为每个像素与所有神经元连接,使得网络无法捕捉到空间结构和位置信息,这在图像处理任务中通常是关键的。
  • 过拟合风险高: 参数量巨大会增加模型的复杂性,容易过拟合训练数据,特别是在训练数据较少的情况下,容易导致泛化能力下降。
  • 不适合大尺寸输入: 对于大尺寸输入的图像,全连接层的参数量迅速增长,会使得训练过程变得困难并且需要更多的计算资源。
  • 计算开销大: 全连接层需要大量的计算资源和时间来训练模型,尤其是在处理大规模数据集时,会增加训练时间和成本。

以上这些缺点,导致了全连接网络无法胜任图片任务,为了克服全连接层在图像处理任务中的缺点,通常会使用卷积神经网络(CNN)来代替全连接层。CNN具有局部连接和权值共享的特性,可以更有效地处理图像数据,提取空间信息,并且减少参数量和计算开销。因此,在图像人物识别等任务中,CNN通常被认为是更有效和更适合的模型架构。

2.卷积通俗理解(直接从这里开始看)

卷积神经网络通过充分利用局部相关性和权值共享的思想,大大地减少了网络的参数量,从而提高训练效率,更容易实现超大规模的深层网络。

2.1什么是卷积?

对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。

非严格意义上来讲,下图中红框框起来的部分便可以理解为一个滤波器,即带着一组固定权重的神经元。多个滤波器叠加便成了卷积层。

在这里插入图片描述
比如下图中,图中左边部分是原始输入数据,图中中间部分是滤波器filter,图中右边是输出的新的二维数据。(就是一个提取特征的过程)
在这里插入图片描述
中间滤波器filter与数据窗口做内积,其具体计算过程则是:40 + 00 + 00 + 00 + 01 + 01 + 00 + 01 + -4*2 = -8

卷积层有时被称为特征映射(feature map),因为它可以被视为一个输入映射到下一层的空间维度的转换器。 在卷积神经网络中,对于某一层的任意元素 𝑥 ,其感受野(receptive field)是指在前向传播期间可能影响 𝑥 计算的所有元素(来自所有先前层)。

2.2图像上的卷积

具体来说,左边是图像输入,中间部分就是滤波器filter(带着一组固定权重的神经元),不同的滤波器filter会得到不同的输出数据,比如颜色深浅、轮廓。相当于如果想提取图像的不同特征,则用不同的滤波器filter,提取想要的关于图像的特定信息:颜色深浅或轮廓。
在这里插入图片描述

2.3卷积的过程

在CNN中,滤波器filter(带着一组固定权重的神经元)对局部输入数据进行卷积计算。每计算完一个数据窗口内的局部数据后,数据窗口不断平移滑动,直到计算完所有数据。这个过程中,有这么几个参数:

  • 深度depth:神经元个数,决定输出的depth厚度。同时代表滤波器个数。
  • 步长stride:决定滑动多少步可以到边缘。
  • 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。

在这里插入图片描述

2.4卷积网络之激励层与池化层

(1)激励层(激活函数层)

卷积网络使用ReLU激活函数,优点是收敛快,求梯度简单。
在这里插入图片描述
sigmoid激活函数容易饱和、造成终止梯度传递,且没有0中心化。

(2)池化pool层

池化,简言之,即取区域平均或最大,如下图所示(图引自cs231n)
在这里插入图片描述
上图所展示的是取区域最大,即上图左边部分中 左上角2x2的矩阵中6最大,右上角2x2的矩阵中8最大,左下角2x2的矩阵中3最大,右下角2x2的矩阵中4最大,所以得到上图右边部分的结果:6 8 3 4。

池化就是这个意思,如果是取平均,那么就取这个区域内的平均。

2.5 特征映射和感受野

卷积层有时被称为特征映射(feature map),因为它可以被视为一个输入映射到下一层的空间维度的转换器。 在卷积神经网络中,对于某一层的任意元素 𝑥 ,其感受野(receptive field)是指在前向传播期间可能影响 𝑥 计算的所有元素(来自所有先前层)。

3.快速认识卷积网络的 层

3.1输入层

输入层比较简单,这一层的主要工作就是输入图像等信息,因为卷积神经网络主要处理的是图像相关的内容。对于输入图像,首先要将其转换为对应的二维矩阵,这个二位矩阵就是由图像每一个像素的像素值大小组成的。
在这里插入图片描述
上图又称为灰度图像,因为其每一个像素值的范围是0 ~ 255(由纯黑色到纯白色),表示其颜色强弱程度。
另外还有黑白图像,每个像素值要么是0(表示纯黑色),要么是255(表示纯白色)。

日常生活中最常见的就是RGB图像,有三个通道,分别是红色、绿色、蓝色。每个通道的每个像素值的范围也是0~255,表示其每个像素的颜色强弱。但是日常处理的基本都是灰度图像,因为比较好操作(值范围较小,颜色较单一),有些RGB图像在输入给神经网络之前也被转化为灰度图像,也是为了方便计算,否则三个通道的像素一起处理计算量非常大。当然,随着计算机性能的高速发展,现在有些神经网络也可以处理三通道的RGB图像。

3.2卷积层

卷积操作会为存在特征的区域确定一个高值,否则确定一个低值。这个过程需要通过计算其与卷积核(Convolution Kernel)的乘积值来确定。假设现在的输入图片是一个人的脑袋,而人的眼睛是需要提取的特征,那么就将人的眼睛作为卷积核,通过在人的脑袋的图片上移动来确定哪里是眼睛。
在这里插入图片描述
通过整个卷积过程又得到一个新的二维矩阵,此二维矩阵也被称为特征图(Feature Map),最后可以将得到的特征图进行上色处理(我只是打个比方,比如高值为白色,低值为黑色),最后可以提取到关于人的眼睛的特征。

如果每次计算的时候,边缘只被计算一次,而中间被多次计算,那么得到的特征图也会丢失边缘特征,最终会导致特征提取不准确,那为了解决这个问题,可以在原始的输入图像的二维矩阵周围再拓展一圈或者几圈,这样每个位置都可以被公平的计算到了,也就不会丢失任何特征,此过程可见下面情况,这种通过拓展解决特征丢失的方法又被称为Padding(填充)。Padding取值为2,拓展两圈:
在这里插入图片描述
如果使用两个卷积核去提取一张彩色图片呢?彩色图片都是三个通道,也就是说一个彩色图片会有三个二维矩阵。此时使用两组卷积核,每组卷积核都用来提取自己通道的二维矩阵的特征,只需要用两组卷积核的第一个卷积核来计算得到特征图就可以了。【注意,这里的3通道用一组也是可以的、根据自己需要来,用一组的话那就是删掉Filter W1,然后输出就只有一个矩阵。】

在这里插入图片描述

简而言之的总结:
如果是一个通道那就需要使用一个卷积核去操作(使用),三个通道需要使用3个卷积核去操作。处理多通道输入时,每个通道通常都会有对应的卷积核进行卷积操作。这个过程称为多通道卷积(Multi-channel Convolution)。当一个输入信号有多个通道时,每个通道都需要有相应的卷积核去提取特征。在每个通道上应用卷积核后,将每个通道的卷积结果求和,得到最终的输出特征图。

3.3池化层

有几个卷积核就有多少个特征图,现实中情况肯定更为复杂,也就会有更多的卷积核,那么就会有更多的特征图,当特征图非常多的时候,意味着我们得到的特征也非常多,但是这么多特征并不都是所需要的。

为了解决这个问题,可以利用池化层,池化层又称为下采样,也就是说,当进行卷积操作后,再将得到的特征图进行特征提取,将其中最具有代表性的特征提取出来,可以起到减小过拟合和降低维度的作用,这个过程如下所示:
在这里插入图片描述
其实这个过程类似于卷积的过程,就是一个正方形的小方块在图片上进行移动,每次取这个正方形方框中最具有代表性的特征,那么问题又来了,如何提取到最有代表性的特征呢,通常有两种方法:

  • 最大池化:顾名思义,最大池化就是每次取正方形中所有值的最大值,这个最大值也就相当于当前位置最具有代表性的特征。
  • 平均池化:平均池化就是取此正方形区域中所有值的平均值,考虑到每个位置的值对于此处特征的影响,平均池化计算也比较简单。
  • 还可以实现加权形式的池化,对深色区域或者浅色区域,或者明显痕迹部分进行突出表达,比如加大权重的方式进行。

3.4全连接层

卷积和最大池化之后,得到最后的特征图,此时的特征都是经过计算后得到的,所以代表性比较强,最后经过全连接层,展开为一维的向量,再经过一次计算后,得到最终的识别概率,这就是卷积神经网络的整个过程。

3.5输出层

卷积神经网络的输出层理解起来就比较简单了,只需要将全连接层得到的一维向量经过计算后得到识别值的一个概率,当然,这个计算可能是线性的,也可能是非线性的。

在深度学习中,需要识别的结果一般都是多分类的,所以每个位置都会有一个概率值,代表识别为当前值的概率,取最大的概率值,就是最终的识别结果。在训练的过程中,可以通过不断地调整参数值来使识别结果更准确,从而达到最高的模型准确率。

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

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

相关文章

Docker启动失败,报错Is the docker daemon running? Is the docker daemon running?

问题: docker没有正常启动 解决方法: systemctl daemon-reload systemctl restart docker.service

【MySql实战--日志系统:一条SQL更新语句是如何执行的?】

前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。 那么,一条更新语句的执行流程又是怎…

LeetCode-60题:排列序列解法一(原创)

【题目描述】 给出集合 [1,2,3,...,n],其所有元素共有 n! 种排列。按大小顺序列出所有排列情况,并一一标记,当 n 3 时, 所有排列如下:"123" 、"132" 、"213" 、"231"、"312"、…

用户需求沟通的4大常见障碍及解决方案

有效的用户需求沟通对于软件项目的成功至关重要。它可以帮助项目团队更好地理解用户需求,从而设计出更符合用户期望的产品,有助于建立和维护良好的客户关系,提高客户满意度。 因此,我们需重视用户需求沟通中的常见障碍&#xff0c…

低功率接地故障断路器(GFI)控制芯片D4147简介

应用领域 D4147主要用于三线制GFCI输出接口、GFCI芯片断路器、便携式GFCI线路等领域的产品,侦测并防护火线对地故障和零线对负载短路故障。 功能介绍 D4147 为低功率接地故障断路器(GFI)控制器芯片,用于检测危险的接地故障电流路径…

【原创】JDK17获取CPU占用率、内存占用率以及堆内存使用情况

前言 我之前一篇文章: 【原创】Java获取CPU占用率、内存占用率最简单的方式_java获取cpu使用率-CSDN博客 这篇文章虽然简单,但是只能针对JDK8,换成现在模块化的JDK后,OperatingSystemMXBean类就无法反射获取其中的信息了&#…

网络QUIC测试方法。

1、通过CURL3命令行接口,访问H3/泛播测试 curl3 --http3 --verbose https://h3.speed.cloudflare.com/__down?bytes100000000000 >> /dev/null 2、访问H3/泛播测试网站,按F12打开开发人员控制台,切换到网络这一项,把协议显…

蓝桥杯-数的潜能-求快速幂

题目 思路 --将数字拆分成加和的形式,并且相乘。数据范围到10的18次方,暴力肯定不行,要找规律。拆分成1肯定不行,对乘法没有贡献,2可以,3也可以,4、5、6等大于3的数字都可以用2和3来表示。所以…

【python】flask服务端响应与重定向处理

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

OpenGL+QT实现矢量和影像的叠加绘制

一、QT下OpenGL框架的初始化 OpenGL的介绍我在这里就没有必要介绍了,那OpenGL和QT的结合在这里就有必要先介绍一下,也就是怎么使用QT下的OpenGL框架。要想使用QT下的OpenGL框架,就必须要子类化QGLWidget,然后实现。 void initia…

Java算法总结之插入排序(详解)

程序代码园发文地址:Java算法总结之插入排序(详解)-程序代码园小说,Java,HTML,Java小工具,程序代码园,http://www.byqws.com/ ,Java算法总结之插入排序(详解)http://www.byqws.com/blog/3148.html?sourcecsdn 插入排…

Oracle数据库删除归档脚本(实例)

Oracle数据库删除归档脚本&#xff08;实例&#xff09; #!/bin/sh applied_days2 cat /dev/null>applied_arch.lst sqlplus -s "/as sysdba" <<EOF>/dev/null set feedback off set pages 0 set head off set timing off set echo off spool applied_a…

IDEA 多个git仓库项目放一个窗口

1、多个项目先通过新建module或者CtrlAltShiftS 添加module引入 2、重点是右下角有时候git 分支视图只有一个module的Repositories。这时候需要去设置把多个git仓库添加到同一个窗口才能方便提交代码。 3、如果Directory Mappings已经有相关项目配置&#xff0c;但是灰色的&…

常量与变量

1 常量和符号常量 在程序运行过程中,其值不能被改变的量称为常量。常量区分为不同的类型,如12、0、-3为整型常量&#xff0c;4.6、-1.23为实型常量&#xff0c;a、d为字符常量。常量一般从其字面形式即可判别。这种常量称为字面常量或直接常量。 也可以用一个标识符代表一个常…

【NBUOJ刷题笔记】递推_递归+分治策略1

0. 前言 PS&#xff1a;本人并不是集训队的成员&#xff0c;因此代码写的烂轻点喷。。。本专题一方面是巩固自己的算法知识&#xff0c;另一方面是给NBU学弟学妹们参考解题思路&#xff08;切勿直接搬运抄袭提交作业&#xff01;&#xff01;&#xff01;&#xff09;最后&…

【消息队列开发】 虚拟主机设计——操作绑定

文章目录 &#x1f343;前言&#x1f332;添加绑定&#x1f333;删除绑定⭕总结 &#x1f343;前言 本次开发任务&#xff1a; 实现对绑定的添加与绑定 &#x1f332;添加绑定 对于绑定的操作相较于前面对交换机和队列的操作就会麻烦一点了 我们分为以下七步来实现&#x…

【xr806开发板使用】连接wifi例程实现

##开发环境 win10 WSL ##1、环境配置 参考&#xff1a;https://aijishu.com/a/1060000000287513 首先下载安装wsl 和ubuntu https://docs.microsoft.com/zh-cn/windows/wsl/install &#xff08;1&#xff09;安装repo&#xff1a; 创建repo安装目录&#xff1a; mkdir ~/…

AI预测福彩3D第15弹【2024年3月21日预测--新算法重新开始计算第12次测试】

今天继续对第一套算法进行测试&#xff0c;废话不多说&#xff0c;直接上结果。 最终&#xff0c;经过研判分析&#xff0c;2024年3月21日福彩3D的七码预测结果如下&#xff1a; 百位&#xff1a;5 4 7 1 2 0 6 十位&#xff1a;3 5 1 2 0 4 6(9换6) 个位&#xff1a;2 0 1 3 4…

修改网站源码,给电子商城的商品添加图片时商品id为0的原因

修改网站源码&#xff0c;给电子商城的商品添加图片时商品id为0的原因。花了几个小时查找原因。后来&#xff0c;由于PictureControl.class.php是复制CourseControl.class.php而来&#xff0c;于是对比了这两个文件&#xff0c;在CourseControl.class.php找到了不一样的关键几条…

【算法】差分算法(空调)

可用于求一个数组要变为另一个数组最少要改变多少次的次数 Farmer John 的 N 头奶牛对他们牛棚的室温非常挑剔。 有些奶牛喜欢温度低一些&#xff0c;而有些奶牛则喜欢温度高一些。 Farmer John 的牛棚包含一排 N 个牛栏&#xff0c;编号为 1…N&#xff0c;每个牛栏里有一头…