我的 Lasagne/Theano 神经网络运行速度是否太慢?

数据挖掘 机器学习 神经网络
2022-02-18 15:59:48

所以我是神经网络世界的新手,我已经对该领域有点熟悉,并开始使用我自己的网络。

我正在使用Lasagne,我发现我的 NN 的训练花费了不可行的时间。也许我正在寻找的问题只是比我的计算机可以咀嚼的更多;我只是不知道,因为我对这些事情的进展还不够熟悉。

我正在尝试训练一个一维卷积神经网络,它有两个一维卷积层、两个最大池层和两个全连接层。总而言之,NN 有大约 95,000 个参数(权重 + 偏差)。我在 Amazon EC2 GPU 实例上运行它。我发现在训练期间,它需要 0.3 秒/样本。

相比之下,当我运行 Lasagne MNIST CNN 示例时,它需要大约 0.0003 秒/样本,快 1000 倍!公平地说,我的输入样本是 18000x3 维,而 MNIST 样本是 28x28 维;但差异有 68 倍。而且 MNIST CNN 的参数实际上比我的多,大约有 160,000 个参数。

这是否表明我正在做的事情有什么问题?

1个回答

找到了答案

在进行了一些分析并阅读了以下内容后,我发现了它为什么运行缓慢

事实证明,如果你用 stride != 1 进行卷积,那么它不会使用 GPU 进行该操作(或者可能是该操作的梯度),并且会使事情运行得更慢。无论如何,我只是使用非 1 步幅来节省执行时间,但事实证明我最好摆脱步幅。

另请注意,在您的卷积层中,您必须完全摆脱stride=X. 仅仅拥有stride=1是不够的。