我正在尝试使用matlab中的神经网络库深入学习。一个好的开始步骤似乎是训练自动编码器。在这方面,我很高兴看到我是否从我的gpu中获取了msot。
就此而言,当我跑
时tic
autoenc1 = trainAutoencoder(allSets,5,...
'L2WeightRegularization',0.001,...
'SparsityRegularization',1,...
'SparsityProportion',0.2,...
'DecoderTransferFunction','logsig',...
'useGPU',true)
toc
我得到"经过的时间是19.680823秒。"。 但是,不使用gpu(设置' useGPU'为false)它只需要8.272708秒。 我很困惑,因为我假设使用gpu进行神经网络会加快速度吗?有没有人知道检查matlab和cuda是否正确连接的任何方法,或者看看matlab实际上是如何使用这些资源的?
我安装了cuda 8.1,并且正在使用GeForce GTX 960M(计算能力5.0)。 matlab版本是2016b。
编辑:正如已经指出的那样,目前还没有cuda 8.1。我所拥有的是8.0和cudnn 5.1。答案 0 :(得分:1)
正如评论中所指出的,在GPU上执行计算不一定更快。相反,对性能的影响取决于数据转换和传输的额外开销。
通常,可以通过批量大小影响开销,但trainAutoencoder函数不提供该选项。
有关MATLAB中GPU性能的一般测量和改进,请参阅this link。