当前位置: 首页 > 知识库问答 >
问题:

TORCH:为什么卷积层在相同数据大小的情况下比全连接线性层还要慢

穆飞龙
2023-03-14

我正在用torch7(Lua5.3)实现一个训练mnist数据集的神经网络,但是我在Torch中发现了两个奇怪的问题:
1。卷积层在相同数据大小时比全连通线性层慢。
2。卷积层在GPU(带CUDA9.0的TITAN X)中比在CPU中慢

通过一些简单的实验证明:
对于第一个问题:
(1)当批大小为500,特征维数为784(28*28)时,对于一个全连通线性层,输入大小为500*784,输出大小为300(我们将其设为300),数据转发需要1.67s

图片:784*300全连接线性层

(2)在相同批量大小的情况下,卷积层时间为3.07s,Input2的大小为500*1*28*28,即1个通道500张图片,图片为28*28。卷积层有1个输入平面和3个输出平面,核大小为2*2,步长为1,填充为0

图片:卷积层

但是,很明显卷积层的权重更小,需要的计算量也更小,我认为它应该比线性层快很多。而且GPU也不应该比CPU慢。

提前致谢

共有1个答案

谭绍晖
2023-03-14

虽然我不知道为什么在GPU中运行卷积层会很慢,但我找到了一种方法来加速它。“CUDNN”是在NVIDIA CUDNN的基础上开发的一个torch软件包,可以大大提高卷积层的计算速度。详见此处。正如我所知,线性层不能被加速太多,然而,卷积层却是另一回事

 类似资料:
  • 本文向大家介绍全连接层和卷积层的作用?相关面试题,主要包含被问及全连接层和卷积层的作用?时的应答技巧和注意事项,需要的朋友参考一下 全连接层是起到一个分类器的作用,卷积层是用来提取某些特征的层,参数量相对小很多,起到特征工程的作用,感受视野,将欲提取之外的数据的影响减弱,增强需要提取特征的那部分数据的影响

  • 我有点理解我们如何根据cs231n将全连接转换为卷积层: FC公司- 我不明白的是,在cs231n中,卷积实现的输出应该是一个维度为1x1x4096的向量,论文如何将FC的输出维度为12x12x512作为卷积实现?

  • 问题是卷积神经网络的数学细节。假设网络的体系结构(其目标是图像分类)是这样的 输入图像32x32 第一个隐藏层3x28x28(由3个大小为5x5的滤波器卷积而成,步幅=0,无填充),随后是激活 池化层(在2x2区域上池化),产生3x14x14输出 第二隐藏层6x10x10(由6个大小为5x5的滤波器卷积而成,步幅=0,无填充),随后激活 池化层(在2x2区域上池化),产生6x5x5输出 具有100

  • 在设计用于提取DNA基序的卷积神经网络的背景下,为什么一个卷积层之间没有最大池函数? 以下是此架构出现的上下文。

  • 卷积神经网络有一个批量过滤器, 持续不断的在图片上滚动收集图片里的信息,每一次收集的时候都只是收集一小块像素区域, 然后把收集来的信息进行整理, 这时候整理出来的信息有了一些实际上的呈现, 比如这时的神经网络能看到一些边缘的图片信息, 然后在以同样的步骤, 用类似的批量过滤器扫过产生的这些边缘信息, 神经网络从这些边缘信息里面总结出更高层的信息结构,比如说总结的边缘能够画出眼睛,鼻子等等. 再经过

  • Convolution1D层 keras.layers.convolutional.Convolution1D(nb_filter, filter_length, init='uniform', activation='linear', weights=None, border_mode='valid', subsample_length=1, W_regularizer=None, b_regu