人工智能AI 全栈体系(四)

news2025/2/25 2:27:16

第一章 神经网络是如何实现的

除了全连接神经网络外,还有其他形式的神经网络。
此节将讲述神经网络的另一种形式:卷积神经网络。

四、卷积神经网络

  • 首先我们看看全连接神经网络有什么不足。正如其名字一样,全连接神经网络,两个相邻层的神经元都有连接,当神经元个数比较多时,连接权重会非常多,一方面会影响神经网络的训练速度,另一方面,在使用神经网络时也会影响计算速度。实际上,在有些情况下,神经元是可以共享的。

请添加图片描述

1. 提取局部模式

  • 一个神经元可以看作是一个模式,模式体现在权重上,通过运算,可以抽取出相应的模式。神经元的输出可以看作是与指定模式匹配的程度或者概率。在一个图像的局部是否有某个模式,概率有多大,用一个小粒度的模式,在一个局部范围内匹配就可以了。

请添加图片描述

  • 比如,假设 k = [ − 1 , 0 , 1 − 1 , 0 , 1 − 1 , 0 , 1 ] k= \begin{bmatrix} -1,&0,&1\\ -1,&0,&1\\ -1,&0,&1\end{bmatrix} k= 1,1,1,0,0,0,111
    表示了一个3×3的模式,我们先不管这个模式代表了什么,我们想知道在一个更大的图像中,比如5×5大小的图像上是否具有这种模式,由于图像比模式大,具有多个3×3的区域,每个区域上都可能具有这个模式,这样的话,我们就需要用k在每个区域上做匹配得到一个匹配值,匹配值的大小反应了这个区域与模式的匹配程度。下图给出了左上角3×3区域与模式k的匹配结果,如果我们先按行、再按列,每次移动一个位置进行匹配,就得到了下图中的输出结果。
    请添加图片描述
    请添加图片描述
    请添加图片描述
    请添加图片描述

2. 全连接、卷积神经网络对比

请添加图片描述

2.1 卷积神经网络
  • 卷积神经网络:两层之间的神经元不是全部有连接的,比如输出层左上角的神经元只与输入层左上角区域的 9 个神经元有连接,而输出层右下角的神经元只与输入层右下角区域的 9 个神经元有连接,其他神经元虽然没有画出来,也是一样的。
2.2 局部连接
  • 这就是所谓的局部连接。因为我们只是查看一个局部范围内是否有这种模式,所以只需要局部连接就可以了,既减少了连接数量,又达到了局部匹配的目的。这样就减少了连接权重,可以加快计算速度。
2.3 权值共享
  • 如图所示,无论是与图像的左上角匹配,还是与做左中角匹配,我们都是与同一个模式进行匹配,因此图中红色的连接权重,和绿色的连接权重应该是一样的,这样才可能匹配的是同一个模式。不同区域的权重是一样的。
  • 在这种情况下,权重一共就 9 个,再加上神经元的偏置项 b,一共也就 10 个参数。而且与输入层有多少个神经元无关,这就是所谓的权值共享。
2.4 参数
  • 如果是全连接神经网络需要多少个参数?
    • 输入是 5×5 共 25 个输入,输出是 3×3 共 9 个神经元,如果是全连接的话,则需要 25*9=225 个权重参数,再加上每个神经元有一个偏置项 b,则总的参数量为 225+9=234 个。
  • 如果是全连接神经网络需要 234 个参数,而采用这种局部连接、权值共享的神经网络则只需要 10 个参数,大大地减少了参数量。
2.5 卷积神经网络特点
  • 这样的神经网络,称为卷积神经网络,其中的模式 k 称作卷积核。其特点就是局部连接、权值共享。
  • 卷积核可以根据需要设置不同的大小,卷积核越小,所表示的模式粒度就越小。由于卷积核相当于抽取具有某种模式的特征,所以又被称作过滤器。

3. 例子:边缘提取

  • 下图左边是“口”字的图像,我们想提取图像中“横”模式的特征,可以使用如图右边中卷积核对其进行匹配,卷积结果如中间所示。
    请添加图片描述
  • 绿色部分反应了“口”字上下两个“横”的上边缘信息,除了两端的匹配结果为 3 外,其余均为 4,匹配值都比较大。而黄色部分反应的是“口”字上下两个“横”的下边缘信息,除了两端匹配值为-3 外,其余均为-4,匹配值的绝对值也都比较大。“口”字中间部分如图所示的中间蓝色部分是没有笔画的,可以认为是一个没有笔画的“横”,其上边缘反应在图中的粉色部分,匹配值为-3 或-4,而下边缘对应图中的灰色部分,匹配值为 3 或者 4。对于“口”字的其他与“横”没有关系的部分,匹配值基本为 0,少数几个与“横”连接的位置匹配是 1 或者-1。由此可见,只要是与“横”有关的,匹配值的绝对值都比较大,大多为 4,少数位置为 3,而与“横”无关的部分,匹配值的绝对值都比较小,大多为 0,少数地方为 1。
  • 同前面介绍过的数字识别的例子一样,也可以在卷积神经元中加上一个 sigmoid 函数,表示是不是“横”的概率,对匹配值取了绝对值后再使用 sigmoid 函数的结果如下图所示,从图中可以看出,与“横”有关的位置概率值基本为 1,而其他位置基本为 0.5,说明结果不确定。所以,图示的卷积核就起到了提取“横”模式特征的作用。同样的,我们也可以用类似的方法提取“竖”模式特征。

请添加图片描述
在这里插入图片描述

4. 卷积核的大小(一)

  • 上述例子可以很好地体现出卷积神经网络提取局部模式特征的作用。
  • 但是如何设计卷积核呢?

请添加图片描述

  • 同全连接神经网络一样,卷积核也就是权重,也是可以通过 BP 算法训练出来的,不需要人工设计。只是对于卷积神经网络来说,由于有局部连接和权值共享等,需要重新推导具体的 BP 算法,其算法思想是完全一样的。
  • 卷积神经网络不是只有一个输入层和一个输出层,在一层卷积之后,还可以再添加卷积层,可以有很多层。
  • 输入层有 5×5 个神经元,经过一个 3×3 的卷积操作后,下一层就只有 3×3 个神经元了,这样一层层做下去后面的神经元数是不是就越来越少了?

5. 填充

  • 这样一层层加上卷积层后,每层的神经元确实会越来越少。如果想保持经过一个卷积层后神经元个数不变,可以通过在前一层神经元四周填充 0 的办法解决。比如图例,我们可以在输入层填充一圈 0,由原来的 5×5 变为 7×7,这样卷积层的输出就还是保持 5×5 的大小了。究竟需要补充几圈 0,与卷积核的大小有关,对于 3×3 的卷积核需要补充一圈 0,而对于 5×5 的卷积核,则需要补充两圈 0,才能使得输出的神经元数与输入保持一致。事实上,上述的“口”字的例子时,为了保持输出的神经元个数与输入一致,已经进行了填充操作。
    请添加图片描述
    请添加图片描述
    请添加图片描述
  • 同一个输入可以有多个不同的卷积,每个卷积得到一个输出,称作通道,有多少个卷积核,就得到多少个通道,不同的通道并列起来作为输出。如图所示,具有两个卷积核,得到两个通道的输出。

6. 步长

请添加图片描述

7. 多卷积核

请添加图片描述

  • 输出得到两个通道,如果在后面再接一个卷积层,由于输入变成了两个通道,这时卷积如何计算呢?

8. 多通道输入时的卷积

  • 多通道卷积问题。这时的卷积核可以看成是“立体”的,除了高和宽以外,又多了一个“厚度”,厚度的大小与输入的通道数一样。
    请添加图片描述
    请添加图片描述
  • 在图中,输入由三个通道组成,所以卷积核的厚度与通道数一致也为 3。这样卷积核的参数共有 3×3×3+1=28 个。前面的 3×3 是卷积核的大小,最后一个 3 对应 3 个通道。计算时与单通道时一样,也是从左上角开始,按照先行后列的方式,依次从输入中取 3×3×3 的区域,与卷积核对应位置的权重相乘,再求和,得到一个输出值。值得注意的是,无论有几个输入通道,如果只有一个卷积核,那么输出的通道数也只有一个。如果有多个卷积核,则输出的的通道数就有多个,与卷积核数一致。下图给出了一个输入具有两个通道的卷积计算示例。

9. 多通道卷积举例

请添加图片描述

  • 最左边是输入的两个通道,中间是与两个通道相对应的厚度为 2 的卷积核,最右边是卷积的结果,由于只有一个卷积核,结果也只有一个通道。同样可以通过多个卷积核得到多个通道的输出。
  • 由于卷积核的厚度总是与输入的通道数是一致的,所以平时说卷积核时,往往会省略其厚度,只说卷积核的高和宽,比如上例中的卷积核为 3×3,不用说具体的厚度是多少,默认厚度就是输入的通道数。

10. 卷积核的大小(二)

请添加图片描述

  • 卷积核越小,关注的“视野”范围也越小,提取的特征粒度也就越小。反之卷积核越大,其视野范围也大,提取的特征粒度也就越大。但是这些都是相对于同样的输入情况下来说的。由于多个卷积层可以串联起来,同样大小的卷积核在不同的层次上,其提取的特征粒度也是不一样的。
  • 不同层的卷积其输入是不同的。以图像处理为例,如果输入是原始图像,则输入都是一个个的像素,卷积核只能在像素级提取特征。如果是下一个卷积层,输入是已经抽取的特征,是在特征级的水平上再次抽取特征,所以这两种情况下,即便卷积核大小是相同的,其抽取的特征粒度也是不同的,越是上层(靠近输出层),提取到的特征粒度越大。
  • 上图给出了一个简单的卷积核大小为 3 的例子。中间一层神经元(可以认为是一个卷积核)每个只能感受到下面 3 个输入的信息,最上边的神经元,虽然卷积核也是 3,但是通过中间层的 3 个神经元,可以感受到输入层的 5 个输入信息,相当于视野被扩大了,提取的特征粒度也就变大了。
  • 卷积核的作用相当于提取具有某种模式的特征,有些特征比较明显,取值就比较大,有些特征不明显,甚至没有这种特征,取值就会比较小。是否可以只把取值大的特征保留下来,突出这些特征呢?

11. 池化

  • 在卷积层之后,可以加入一个被称作“池化”的层进行一次特征的筛选,将明显的特征保留下来,去掉那些不明显的特征。

请添加图片描述

12. 最大池化

  • 下图是一个窗口为 2×2、步长为 2 的最大池化示意图。池化窗口先行后列进行移动,每次移动一个步长的位置,在这个例子中就是两个位置,然后取窗口内的最大值作为池化的输出,这就是最大池化方法。窗口和步长的大小是可以设置的,最常用的是窗口为 2×2、步长为 2 池化。经过这种最大池化之后,保留了每个窗口内最大的模式特征,同时使得神经元的的个数减少到原来的四分之一,起到了数据压缩的作用。

请添加图片描述

  • 除了最大池化方法外,还有平均池化方法,取窗口内的平均值作为输出。最大池化体现的是一个局部区域内的主要特征,平均池化体现的是一个局部区域内特征的平均值。
  • 需要强调的是,池化方法是作用在每个通道上的,池化前后的通道数是一样多的。

13. 神经网络应用举例

13.1 LeNet 神经网络
  • 这是一个数字识别的实际例子,该例子通过联合应用全连接神经网络和卷积神经网络实现手写数字的识别。
    请添加图片描述
  • 这是一个比较早期的用于手写数字识别的神经网络 LeNet,输入是 32×32 的灰度数字图像,第一个卷积层采用 6 个无填充、步长为 1 的 5×5 卷积核,这样就得到了 6 个通道,每个通道为 28×28 个输出。然后使用一个 2×2 的步长为 2 的最大池化,得到 6 个 14×14 的通道。第二个卷积层采用 16 个无填充、步长为 1 的 5×5 卷积核,得到 16 个通道、每个通道为 10×10 的输出。再使用一个 2×2 步长为 2 的最大池化,进一步压缩为 16 个通道、每个通道为 5×5 的输出。接下来连接两个全连接的隐含层,神经元个数分别为 120 和 84,最后一层是 10 个输出,分别对应 10 个数字的识别结果。每个卷积核或者神经元均带有激活函数,早期激活函数大多采用 sigmoid 函数,现在一般在输出层用 softmax 激活函数,其他地方用 ReLU 激活函数。
  • 第一个卷积层是 5×5 的卷积核,输入是单通道,每个卷积核 25 个参数,共 6 个卷积核,所以参数个数为 5×5×6=150;第二个卷积层的卷积核还是 5×5 的,但是通道数为 6,所以每个卷积核参数个数为 5×5×6 个参数,共有 16 个卷积核,所以参数个数为 5×5×6×16=2400;第一个全连接输入是 16 个 5×5 的通道,所以共有 5×5×16 个神经元,这些神经元与其下一层的 120 个神经元一一相连,所以有 5×5×16×120=48000 个参数,该 120 个神经元又与下一层的 84 个神经元全连接,所以有 120×84=10080 个参数;这层的 84 个神经元与输出层的 10 个神经元全连接,有 84×10=840 个参数。所以这个神经网络的全部参数个数为上述参数个数之和,即 150+2400+48000+10080+840=61470 个参数。
  • 但是偏置 b 也应该是一个参数。对于卷积核来说,由于共享参数,所以一个卷积核有一个 b,而对于全连接部分来说,每个神经元有一个 b。这样的话,第一个卷积层有 6 个卷积核,所以有 6 个 b,第二个卷积层有 16 个卷积核,所以有 16 个 b,而后面的全连接层分别有 120、84 和 10 个神经元,所以偏置的数量分别是 120、84 和 10。这样算的话,在前面参数的基础上,应该再加上 6+16+120+84+10=236 个参数,所以全部参数是 61470+236=61706 个。
  • 这里 16 个 5×5 的通道,如何和下一层的 120 个神经元全连接呢?16 个 5×5 通道共有 400 个神经元,把它们展开成一长串就可以了。相当于 400 个神经元与 120 个神经元全连接。
13.2 VGG-16 神经网络
  • 该神经网络曾经参加 ImageNet 比赛,以微弱差距获得第二名。ImageNet 是一个图像识别的比赛,有 1000 个类别的输出,该项比赛有力地促进了图像识别研究的发展。
    请添加图片描述
  • 该神经网络非常规整,像一个塔一样,我们从输入到输出分块介绍其组成。

(1)由于处理的是彩色图像,所以输入是由红、绿、蓝三色组成的三个通道,大小为 224×224×3,这里的 3 是指 3 个通道。

(2)连续 2 层带填充的 3×3 卷积层(即边缘补充 0),每层都有 64 个卷积核,输出是 64 个通道,每个通道为 224×224。每个卷积核均附加 ReLU 激活函数。后面的卷积核均附加了 ReLU 激活函数,如果没有特殊情况,就不再单独说明了。

(3)2×2 步长为 2 的最大池化,还是 64 个通道,每个通道被压缩到 112×112。

(4)连续 2 层带填充的 3×3 卷积层,每层都有 128 个卷积核,输出是 128 个通道,每个通道为 112×112。

(5)2×2 步长为 2 的最大池化,输出是 128 个通道,每个通道被压缩到 56×56。

(6) 连续 3 层带填充的 3×3 卷积层,每层都有 256 个卷积核,输出是 256 个通道,每个通道为 56×56。

(7)2×2 步长为 2 的最大池化,输出是 256 个通道,每个通道被压缩到 28×28。

(8)连续 3 层带填充的 3×3 卷积层,每层都有 512 个卷积核,输出是 512 个通道,每个通道为 28×28。

(9)2×2 步长为 2 的最大池化,输出是 512 个通道,每个通道被压缩到 14×14。

(10)连续 3 层带填充的 3×3 卷积层,每层都有 512 个卷积核,输出是 512 个通道,每个通道为 14×14。

(11)2×2 步长为 2 的最大池化,输出是 512 个通道,每个通道被压缩到 7×7。

(12)连续 2 层全连接层,每层 4096 个神经元,均附带 ReLU 激活函数。

(13)由于输出是 1000 个类别,所以输出层有 1000 个神经元。

  • 最后加一个 softmax 激活函数,将输出转化为概率。

14. 总结

请添加图片描述

  • 卷积神经网络的特点是局部连接、参数共享,通过这种方式有效地减少了神经网络的参数量。
  • 卷积神经网络通过卷积核提取局部特征,由于其局部连接、参数共享的特点,可以提取输入图像在不同位置具有相似属性的特征模式。卷积核的大小决定了提取的特征粒度,卷积核越小,提取的特征粒度越小,卷积核越大,提取的特征粒度越大。当多个卷积层串联在一起时,越是在上层(靠近输出层)的卷积层,体现的视野越大,提取的特征粒度也越大,即便卷积核大小是一样的,由于输入的粒度大小不一样,其提取的特征粒度也是不一样的。
  • 在图像处理中,卷积核的大小一般是 k×k 的方形矩阵,按照给定的步长对输入图像先行后列地进行“扫描”,获取图像中不同位置的相似特征。当输入为多个通道时,卷积核变成了一个长方体,其“厚度”与输入的通道数一致,所以通常在说卷积核大小时并不包含其厚度,厚度默认为输入的通道数。
  • 一个卷积核构成一个输出通道,而不论其输入包含多少个通道。在同一个输入下可以使用多个卷积核,获得多个输出通道,输出通道数与卷积核的数量一致。
  • 如果希望卷积层的输出大小与输入大小一致,可以通过在输入图像四周填充 0 的方式实现,具体需要填充多少圈 0,与卷积核的大小和步长有关。比如同是在步长为 1 的情况下,如果卷积核的大小是 3×3,则需要在输入图像四周填充一圈 0,如果卷积核的大小是 5×5,则需要填充两圈 0。
  • 在卷积神经网络中,通常还包含池化层,起到特征压缩的目的。在图像处理中,池化窗口一般是方形的,依据取窗口内的最大值或者平均值,池化分为最大池化和平均池化两种。同卷积操作一样,池化也是依据给定的步长对输入进行先行后列的扫描。所不同的是,池化窗口并没有厚度,只作用在一个通道上,输入有多少个通道,输出还是多少个通道,并不改变通道的个数。
  • 通常卷积神经网络是和全连接神经网络混合在一起使用的,前面几层是卷积层,用于提取特征,后面几层是全连接层,通过对特征的综合实现分类等操作。LeNet 网络和 VGG-16 网络是两个典型的应用。

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

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

相关文章

STM32F4X UCOSIII 事件集

STM32F4X UCOSIII 事件集 事件的应用场景UCOSIII事件工作机制UCOSIII事件操作函数事件创建函数事件删除函数事件发送函数事件接收函数 UCOSIII事件例程 事件在RTOS中也是一种任务间同步的机制,事件不能传递数据。跟信号量不同的是,事件可以实现一对多&am…

C++11之基础篇

C11 C11简介统一的列表初始化{}初始化std::initializer_list 声明autodecltypenullptr范围for循环 STL中一些变化arrayforward_listunderored_map,underored_set C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1),…

HEC-RAS 1D/2D水动力与水环境模拟教程

详情点击公众号技术科研吧链接:HEC-RAS 1D/2D水动力与水环境模拟教程 前言 水动力与水环境模型的数值模拟是实现水资源规划、环境影响分析、防洪规划以及未来气候变化下预测和分析的主要手段。然而,一方面水动力和水环境模型的使用非常复杂&#xff0c…

买卖股票的最佳时机 IV

买卖股票的最佳时机 IV 力扣链接:188. 买卖股票的最佳时机 IV 题目描述 给你一个整数数组 prices 和一个整数 k ,其中 prices[i] 是某支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。也就是说&a…

动态面板案例分析

动态面板模型分析 如果在面板模型中,解释变量包括被解释变量的滞后值,此时则称之为“动态面板模型”,其目的是处理内生性问题。动态面板模型发展分为3个阶段,第1阶段是由Arellano and Bond(1991)提出的差分GMM(difference GMM)&a…

MidJourney | 教你如何做出好看的插画

企业插画主要基于关键词Corporate Flat Illustration(企业平面插画)构成,再结合常用的设计风格,比如孟菲斯风格,线条艺术,梦幻色调等关键词辅助,然后根据你产品需求,融合插画色彩等组…

文章采集,根据标题全网采集文章

无论您是一名学生、研究人员、内容创作者还是企业家,都需要从互联网上搜集文章来获取有价值的信息。然而,如何高效地进行文章采集并找到符合您需求的内容呢? 在日常生活和工作中,我们经常需要查找和整理各种文章和信息。这可能包括…

基于PHP的短视频SEO矩阵系统源码开发

随着短视频市场的爆发式增长,越来越多的企业开始寻求在短视频领域建立自己的品牌形象,增加用户粘性和获取更多流量。为此,一套高效的短视频SEO矩阵系统源码显得尤为重要。本文将介绍基于PHP语言的短视频SEO矩阵系统源码开发,帮助读…

死锁详细解读

目录 死锁(1) 一、死锁的定义 二、产生死锁的原因 三、产生死锁的四个必要条件 四、解决死锁的方法 死锁(2) 第三节 死锁避免 一、死锁避免的概念 二、安全状态与安全序列 三、银行家算法 第四节、死锁的检测与解除 …

怎样找到NPM里面开源库下载地址

场景 最近帮忙找一个开源库地址。这里以vue/language-core为例子。 解决 https://registry.npmmirror.com/vue/language-core/1.8.13这里就是如下格式: https://registry.npmmirror.com/{包名}/{版本号}打开这个页面后,得到开源库下载地址&#xff0c…

【GIT问题解决】---- 在【.gitignore】中添加了忽略文件或文件夹后不生效

1. 出现问题 在已经提交过的 GIT 管理的项目中,在 .gitignore 文件中新增一些忽略的文件或者文件夹,或者直接新建 .gitignore 文件之后,新增的内容不生效。 2. 实例截图 3. 实例描述 lifecycle.js 文件已新增到 .gitignore 文件中&#xf…

RapidSSL的便宜单域名https证书

RapidSSL是Geotrust https证书品牌中的一款入门级https证书品牌,目前属于Digicert的子品牌。它是一款提供高性价比和广泛适用范围的https证书,无论是个人还是企业用户都可以轻松申请并快速验证。今天就随SSL盾小编了解RapidSSL旗下的单域名https证书。 …

【HCIE】04.网络安全技术

端口隔离 在同一VLAN中可以隔离二层与三层通信,让同VLAN内的设备可以通信或者不可以通信。 定义一个端口隔离组,在一个组内无法互访,不在一个组里面可以进行互访 port-isolate enable group1 //使能端口隔离功能 port-isolate mdoe all //全…

Windows系统部署WebDAV服务结合内网穿透实现公网访问,轻松共享文件与资源

windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】 文章目录 windows搭建WebDAV服务,并内网穿透公网访问【无公网IP】1. 安装IIS必要WebDav组件2. 客户端测试3. cpolar内网穿透3.1 打开Web-UI管理界面3.2 创建隧道3.3 查看在线隧道列表3.4 浏览器访…

ES9,ES10

文章目录 ES9新特性对象的剩余参数与扩展运算符正则表达式命名捕获组Promise.finally()异步遍历器 ES10新特性Object.fromEntriestrimStart() and trimEnd()Symbol 对象的 description 属性可选的 catch ES9新特性 对象的剩余参数与扩展运算符 对象的剩余参数 let obj {nam…

【Android】线程下载资源保证资源到位采用了 OkHttp的三方网络下载 文件缓存策略

背景 使用 SVGA的三方的url播放方式会比较慢,至少延迟3s以上才会出现svga效果,所以改变策略:将线上的svga全部下载到本地进行播放,那么就得将采用网络缓存的方式实现效果。 实现 那么就得实现以下几点: 初次下载缓…

文件内容显示

一.浏览普通文件 .1. 文件内容查看 1.1.1. cat 命令 作用:查看文件内容,适合数据量较少 格式:cat -参数 文件名 参数: -n:显示行号,加上 -b:文件中所有非空行增加行号,编号从1开始…

Leetcode | 304. 二维区域和检索 - 矩阵不可变

304. 二维区域和检索 - 矩阵不可变 文章目录 [304. 二维区域和检索 - 矩阵不可变](https://leetcode.cn/problems/range-sum-query-2d-immutable/)题目官方题解:二维前缀和 题目 给定一个二维矩阵 matrix,以下类型的多个请求: 计算其子矩形…

DA3 网站的第10位用户信息读取

目录 1.题目描述 2.输入描述 3.输出描述 4.题目分析 5.通过代码 1.题目描述 现有一个Nowcoder.csv文件,它记录了牛客网的部分用户数据,包含如下字段(字段与字段之间以逗号间隔): Nowcoder_ID:用户ID …

绘图系统五:数据产生

文章目录 AxisFrame组件源码模式序列化导入数据获取文件信息导入文本导入二进制数据 📈一 三维绘图系统 📈二 多图绘制系统📈三 坐 标 轴 定 制 📈四 定制绘图风格源码地址 Python打造动态绘图系统 AxisFrame组件 AxisFrame是存…