先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
img

正文

1 CNN的组成

CNN网络受人类视觉神经系统的启发,人类的视觉原理:从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只人脸)。下面是人脑进行人脸识别的一个示例:

在这里插入图片描述

CNN网络主要有三部分构成:

  • 卷积层
    • 提取图像中的局部特征
  • 池化层
    • 大幅降低参数量级(降维)
  • 全连接层
    • 类似人工神经网络的部分,用来输出想要的结果

整个CNN网络结构如下图所示:

在这里插入图片描述

2 卷积层

卷积层是卷积神经网络中的核心模块,卷积层的目的是提取输入特征图的特征,如下图所示,卷积核可以提取图像中的边缘信息。

在这里插入图片描述

2.1 卷积的计算

卷积运算本质上就是在滤波器和输入数据的局部区域间做点积。

在这里插入图片描述
Output 左上角点的计算方法:
在这里插入图片描述

同理可以计算其他各点,得到最终的卷积结果:

在这里插入图片描述
最后一点的计算方法是:

在这里插入图片描述

在上述卷积过程中,特征图比原始图减小了很多,我们可以在原图像的周围进行 padding,来保证在卷积过程中特征图大小不变。

在这里插入图片描述
按照步长为1来移动卷积核,计算特征图如下所示:

在这里插入图片描述

如果我们把stride增大,比如设为2,也是可以提取特征图的,如下图所示:

在这里插入图片描述

2.2 多通道卷积

实际中的图像都是多个通道组成的,我们怎么计算卷积呢?

在这里插入图片描述
计算方法如下:当输入有多个通道(channel)时(例如图片可以有 RGB 三个通道),卷积核需要拥有相同的channel数,每个卷积核 channel 与输入层的对应 channel 进行卷积,将每个 channel 的卷积结果按位相加得到最终的 Feature Map

在这里插入图片描述
输入层的通道数等于每个卷积核的通道数

2.3 多卷积核卷积

如果有多个卷积核时怎么计算呢?当有多个卷积核时,每个卷积核学习到不同的特征,对应产生包含多个 channel 的 Feature Map,例如下图有两个 filter,所以 output 有两个 channel。

在这里插入图片描述

卷积核的个数等于输出的通道数

2.4 特征图大小

输出特征图的大小与以下参数息息相关:

  • size:卷积核/过滤器大小,一般会选择为奇数,比如有1 * 1, 3 * 3, 5 * 5
  • padding:零填充的方式
  • stride:步长

计算方法如下图所示:

在这里插入图片描述
例如,输入特征图为5x5,卷积核为3x3,外加padding 为1,则其输出尺寸为:

在这里插入图片描述
如下图所示:

在这里插入图片描述

2.5 卷积层 api 实现

tf.keras.layers.Conv2D(
    filters, kernel_size, strides=(1, 1), padding='valid', 
     activation=None
)

主要参数说明如下:

在这里插入图片描述

3 池化层

池化层降低了后续网络层的输入维度,缩减模型大小,提高计算速度,并提高了Feature Map 的鲁棒性,防止过拟合,它主要对卷积层学习到的特征图进行下采样(subsampling)处理,主要由两种。

3.1 最大池化

Max Pooling,取窗口内的最大值作为输出,这种方式使用较广泛。

在这里插入图片描述

池化层最大池化的 api 实现如下:

tf.keras.layers.MaxPool2D(
    pool_size=(2, 2), strides=None, padding='valid'
)

参数:

  • pool_size:池化窗口的大小
  • strides:窗口移动的步长,默认为1
  • padding:是否进行填充,默认是不进行填充的

3.2 平均池化

Avg Pooling,取窗口内的所有值的均值作为输出

在这里插入图片描述
池化层平均池化的 api 实现如下:

tf.keras.layers.AveragePooling2D(
    pool_size=(2, 2), strides=None, padding='valid'
)

4 全连接层

全连接层位于CNN网络的末端,经过卷积层的特征提取与池化层的降维后,将特征图转换成 一维向量 送入到全连接层中进行分类或回归的操作。

在这里插入图片描述

在 tf.keras 中全连接层使用 tf.keras.dense 实现

5 CNN的构建

我们构建卷积神经网络在mnist数据集上进行处理,如下图所示:LeNet-5 是一个较简单的卷积神经网络, 输入的二维图像,先经过两次卷积层,池化层,再经过全连接层,最后使用softmax分类作为输出层。

在这里插入图片描述

5.1 数据加载

导入工具包:

import tensorflow as tf
# 数据集
from tensorflow.keras.datasets import mnist

加载数据集:

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

5.2 数据处理

卷积神经网络的输入要求是:N H W C ,分别是图片数量,图片高度,图片宽度和图片的通道,因为是灰度图,通道为1

# 数据处理:n,h,w,c
# 训练集数据
train_images = tf.reshape(train_images, (train_images.shape[0],train_images.shape[1],train_images.shape[2], 1))
print(train_images.shape) # (60000, 28, 28, 1)
# 测试集数据
test_images = tf.reshape(test_images, (test_images.shape[0],test_images.shape[1],test_images.shape[2], 1))

5.3 模型搭建

Lenet-5模型输入的二维图像,先经过两次卷积层、池化层,再经过全连接层,最后使用 softmax 分类作为输出层,模型构建如下:

# 模型构建


**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)**
![img](https://img-blog.csdnimg.cn/img_convert/85c5e151516b2532bba27e47b7c5c650.png)

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

后使用 softmax 分类作为输出层,模型构建如下:



模型构建

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)
[外链图片转存中…(img-815wfZno-1713415042475)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐