我正在训练使用tf.keras.layers.GRU层构建的RNN。他们需要很长时间来训练(> 2个小时),所以我将把它们部署到GPU上进行训练。我想知道关于GPU训练的一些事情:
tf.keras.layers.CuDNNGRU
和tf.keras.layers.GRU
(还有tf.keras.layers.LSTM
与tf.keras.layers.CuDNNLSTM
之间有什么区别?我从this post了解到,CuDNNGRU
层的训练速度比GRU
层快,但是
coremlconverter
将我的keras模型转换为CoreML进行部署。tf.keras.layers.SimpleRNN
(即tf.keras.layers.CuDNNSimpleRNN
)是否有等效的CuDNN层?我尚未致力于特定的体系结构,因此,我认为如果我决定使用SimpleRNN,并且CuDNN层具有我需要的某些功能,那么我将需要tf.keras.layers.CuDNNSimpleRNN
层。CuDNN
层上,我是否需要安装tensorflow-gpu
?还是只要我安装了相关的驱动程序,它们是否仍会部署到GPU?答案 0 :(得分:0)
如果您使用的是与cuda兼容的GPU,则使用CuDNN图层绝对有意义。它们具有不同的实现,试图克服RNN体系结构中固有的计算并行化问题。尽管它们通常表现较差,但速度要快3到6倍https://twitter.com/fchollet/status/918170264608817152?lang=en
在相同的种子下,两层会收敛到不同的结果吗?
是
两层在推理过程中是否表现相同?
您应该具有可比的性能,但不一定完全相同
CuDNN层在推理期间是否需要GPU?
是的,但是您可以转换为CuDNN兼容的GRU / LSTM
GRU层可以在GPU上运行推理吗?
是
对于CuDNN层,我是否需要安装tensorflow-gpu?还是只要我安装了相关的驱动程序,它们是否仍会部署到GPU?
是的,您需要兼容cuda的GPU