WARNING:tensorflow:Layer lstm will not use cuDNN kernel since it doesn‘t meet the cuDNN kernel

R语言 LSTM 和 GRU 的 cuDNN加速

    • LSTM 的报错解决方法
      • WARNING:tensorflow:Layer lstm_1 will not use cuDNN kernel since it doesn't meet the cuDNN kernel criteria. It will use generic GPU kernel as fallback when running on GPU
    • GRU的报错解决方法
      • WARNING:tensorflow:Layer gru will not use cuDNN kernel since it doesn't meet the cuDNN kernel criteria. It will use generic GPU kernel as fallback when running on GPU![在这里插入图片描述](https://img-blog.csdnimg.cn/20201101135755101.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTg2NTM5MA==,size_16,color_FFFFFF,t_70#pic_center)
    • GRU 和 LSTM 是否使用cuDNN的速度差别

最近做RNN方面的事情,要用LSTM和GRU,也是头一次使用,记录下报错。版本是tensorflow2.2.0,windows10,R4.0.1。cuda 10.1,cudnn忘记了 7.4.1或者7.6.5。
解决问题的源头链接:https://keras.io/api/layers/recurrent_layers/lstm/ 这是keras api的文件里面有详细的介绍如何加速。

LSTM 的报错解决方法

WARNING:tensorflow:Layer lstm_1 will not use cuDNN kernel since it doesn’t meet the cuDNN kernel criteria. It will use generic GPU kernel as fallback when running on GPU

不想看keras 文档也可以,这是我在文档里截的图。需要满足一定条件才可以在cuDNN上加速。
WARNING:tensorflow:Layer lstm will not use cuDNN kernel since it doesn‘t meet the cuDNN kernel_第1张图片
直接解决的方法:
在layer_lstm里面加入这一行代码就可以了:

recurrent_activation = 'sigmoid'

一个完整的layer:

 layer_lstm(
  units = 64,
  recurrent_activation = 'sigmoid',
  input_shape = c(NULL,window_size,data_dim))

尽管官网上说要满足 recurrent_activation = ‘sigmoid’, activation == tanh , recurrent_dropout == 0,但其实只有第一条就可以了。

GRU的报错解决方法

WARNING:tensorflow:Layer gru will not use cuDNN kernel since it doesn’t meet the cuDNN kernel criteria. It will use generic GPU kernel as fallback when running on GPUWARNING:tensorflow:Layer lstm will not use cuDNN kernel since it doesn‘t meet the cuDNN kernel_第2张图片

GRU的和LSTM基本差不多,一样要满足那几个条件,之后额外加一条reset这条命令

 recurrent_activation = 'sigmoid',
  reset_after = TRUE,

完整的一个GRU layer示例。

layer_gru(
  units = 64,
  recurrent_activation = 'sigmoid',
  reset_after = TRUE,
  input_shape = c(NULL,window_size,data_dim))

GRU 和 LSTM 是否使用cuDNN的速度差别

GRU差个5倍以上吧,我自己大概试了一下。LSTM差的倍数更多,应该是多于5倍的,可能有7或者8。没有做太多的实验就是随便试了一下。

你可能感兴趣的:(tensorflow,Rstudio,R,tensorflow,深度学习)