欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > Vitis AI 基本认知(CNN基本概念)

Vitis AI 基本认知(CNN基本概念)

2024/10/24 23:15:26 来源:https://blog.csdn.net/DongDong314/article/details/140998633  浏览:    关键词:Vitis AI 基本认知(CNN基本概念)

1. 目的

这篇文档介绍了一个名为CNN Explainer的交互式可视化系统,旨在帮助非专业人士学习卷积神经网络(CNN)。该系统通过直观的方式展示了CNN的工作原理,使用户能够更好地理解复杂的神经网络结构和运算过程。

CNN ExplainerAn interactive visualization system designed to help non-experts learn about Convolutional Neural Networks (CNNs).icon-default.png?t=N7T8https://poloclub.github.io/cnn-explainer/

2. 概念解释

2.1 并行度

PP, Pixel Parallel

ICP, Input Channel Parallel

OCP, Output Channel Parallel

虚线框内表示每周期同时执行的操作。

  • ICP:此CNN第一层有3个通道(RGB),如果DPU的ICP=3(支持3个并行数),意味着单周期内同时执行三个通道的乘法运算;如果ICP=8,那么第一层并没有完全利用DPU的并行算力。
  • OCP:此CNN的输出有三个kernel,意味着有三个输出通道;如果OCP=3,那么三个输出通道并行计算。
  • PP:每个pixcel都会一次或者多次参与卷积运算,DPU每次处理的pixel数量。
  • 卷积阵列都会执行一次乘法和一次累加,这计作 2 次运算。每个周期的峰值运算数量等于PP*ICP*OCP*2。

2.2 超参数

CNN ExplainerAn interactive visualization system designed to help non-experts learn about Convolutional Neural Networks (CNNs).icon-default.png?t=N7T8https://poloclub.github.io/cnn-explainer/

3. Tiny-VGG

filters = 10
tiny_vgg = Sequential([Conv2D(filters, (3, 3), input_shape=(64, 64, 3), name='conv_1_1'),Activation('relu', name='relu_1_1'),Conv2D(filters, (3, 3), name='conv_1_2'),Activation('relu', name='relu_1_2'),MaxPool2D((2, 2), name='max_pool_1'),Conv2D(filters, (3, 3), name='conv_2_1'),Activation('relu', name='relu_2_1'),Conv2D(filters, (3, 3), name='conv_2_2'),Activation('relu', name='relu_2_2'),MaxPool2D((2, 2), name='max_pool_2'),Flatten(name='flatten'),Dense(NUM_CLASS, activation='softmax', name='output')
])

对这个模型的逐层分析:

1. Conv2D(filters, (3, 3), input_shape=(64, 64, 3), name='conv_1_1'):

  • 第一层是一个卷积层,有10个过滤器(卷积核),每个核的大小是3x3。
  • input_shape=(64, 64, 3) 指定了输入图像的尺寸为64x64像素,且是彩色的(3个颜色通道:RGB)。

2. Activation('relu', name='relu_1_1'):

  • 这层使用ReLU(Rectified Linear Unit)激活函数。ReLU函数能帮助网络使用非线性变换,并且具有加速训练的效果。

3. Conv2D(filters, (3, 3), name='conv_1_2'):

  • 第三层又是一个卷积层,配置与第一层相同,也使用10个3x3的过滤器。

4. Activation('relu', name='relu_1_2'):

  • 同第二层,使用ReLU激活函数。

5. MaxPool2D((2, 2), name='max_pool_1'):

  • 最大池化层,使用2x2的池化窗口来降低特征图的空间维度(高和宽),这有助于减少计算量并且提取重要特征。

6. Conv2D(filters, (3, 3), name='conv_2_1'):

  • 第五层是又一个卷积层,参数与前面的卷积层相同。

7. Activation('relu', name='relu_2_1'):

  • 使用ReLU激活函数。

8. Conv2D(filters, (3, 3), name='conv_2_2'):

  • 第七层也是卷积层,与其他卷积层参数相同。

9. Activation('relu', name='relu_2_2'):

  • 使用ReLU激活函数。

10. MaxPool2D((2, 2), name='max_pool_2'):

  • 另一个最大池化层,使用2x2的池化窗口。

11. Flatten(name='flatten'):

  • 将多维的输出展平成一维,这样可以作为全连接层(Dense)的输入。

12. Dense(NUM_CLASS, activation='softmax', name='output'):

  • 全连接层,输出尺寸为NUM_CLASS,这应该是根据具体任务设定的类别数。
  • 使用softmax激活函数,这是多分类任务中常用的激活函数,用于输出每个类别的预测概率。

4. 总结

这篇文档介绍了一个名为CNN Explainer的交互式可视化系统,旨在帮助非专业人士学习卷积神经网络(CNN)。该系统通过直观的方式展示了CNN的工作原理,使用户能够更好地理解复杂的神经网络结构和运算过程。

文档首先解释了并行度的概念,包括像素并行(PP)、输入通道并行(ICP)和输出通道并行(OCP)。这些并行度参数决定了在每个周期内同时执行的操作数量。例如,ICP表示输入通道的并行度,如果DPU的ICP=3,意味着单周期内可以同时处理三个输入通道的运算。

接下来,文档详细分析了一个名为Tiny-VGG的CNN模型。该模型由多个卷积层、激活层、池化层和全连接层组成。每个卷积层使用3x3的过滤器,通过ReLU激活函数进行非线性变换。最大池化层用于降低特征图的空间维度,从而减少计算量并提取重要特征。最后,全连接层使用softmax激活函数输出每个类别的预测概率。

通过这种逐层分析,读者可以清晰地了解每一层的功能和作用,以及它们如何协同工作来完成图像分类任务。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com