【发布时间】:2018-06-04 17:58:21
【问题描述】:
我正在实现一个神经网络来使用 torch7(LUA5.3) 训练 mnist 数据集,但我在 Torch7(LUA5.3) 中发现了 2 个奇怪的问题:
1.在相同的数据量下,卷积层比全连接线性层慢。
2. GPU(TITAN X with cuda9.0)中的卷积层比 CPU 慢
我做了一些简单的实验来证明:
对于第一个问题:
(1) 当batch size为500,特征维度为784(28 * 28)时,对于一个全连接的线性层,输入大小为500*784,输出大小为300(我们设置为300),需要1.67s转发数据
picture: 784 * 300 full connected linear layer
(2)在batch size相同的情况下,卷积层耗时3.07s,input2的size为500*1*28*28,表示500张1通道图片,图片为28*28。卷积层有1个输入平面和3个输出平面,kernel size为2*2,step为1,padding为0
第二个问题:
(1) 在相同的数据量和神经网络结构的情况下,GPU 比 CPU 需要更多的时间:
picture: It takes 11s in GPU however 3.07s in CPU
(2) 线性层运行良好,在 GPU 中确实比在 CPU 中花费的时间更少
picture: it takes only 0.27s when running full connected linear layer in GPU
但是,很明显卷积层的权重较小,需要的计算量也较少,我认为它应该比线性层快得多。此外,GPU 不应该比 CPU 慢。
提前致谢
【问题讨论】:
标签: machine-learning neural-network gpu convolution torch