执行rnn模型时出错。如何解决?

时间:2019-01-20 13:15:39

标签: python tensorflow keras

笔记本电脑规格: 操作系统:Mac OS Mojave Python:3.7

在拟合rnn模型时,出现以下错误:

  

InvalidArgumentError:没有使用这些attrs注册任何OpKernel来支持Op'CudnnRNN'。注册设备:[CPU],注册内核:   

> [[node cu_dnnlstm/CudnnRNN (defined at <ipython-input-15->580eb6f63222>:3)  = CudnnRNN[T=DT_FLOAT, direction="unidirectional", >dropout=0, input_mode="linear_input", is_training=true, rnn_mode="lstm", >seed=0, seed2=0](cu_dnnlstm/transpose, cu_dnnlstm/ExpandDims, >cu_dnnlstm/ExpandDims_1, cu_dnnlstm/concat)]]
  

由操作“ cu_dnnlstm / CudnnRNN”引起,定义为:   > _run_module_as_main中的文件“ /anaconda3/lib/python3.7/runpy.py”,第193行     “ 主要”,mod_spec)   _run_code中的文件“ /anaconda3/lib/python3.7/runpy.py”,第85行    exec(代码,run_globals)   在第16行的“ /anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py”文件中     app.launch_new_instance()   在launch_instance中,文件“ /anaconda3/lib/python3.7/site->packages/traitlets/config/application.py”,行658     app.start()   在开始的文件“ /anaconda3/lib/python3.7/site-packages/ipykernel/kernelapp.py”,第497行     self.io_loop.start()   在开始的文件“ /anaconda3/lib/python3.7/site->packages/tornado/platform/asyncio.py”,第132行     self.asyncio_loop.run_forever()   > run_forever中的第523行的文件“ /anaconda3/lib/python3.7/asyncio/base_events.py”     self._run_once()   > _run_once中的文件“ /anaconda3/lib/python3.7/asyncio/base_events.py”,行1758     handle._run()   _run中的文件“ /anaconda3/lib/python3.7/asyncio/events.py”,第88行   self._context.run(self._callback,* self._args)   _run_callback中的文件“ /anaconda3/lib/python3.7/site-packages/tornado/ioloop.py”,行> 758     ret = callback()   在null_wrapper中的文件“ /anaconda3/lib/python3.7/site-packages/tornado/stack_context.py”,第300行     返回fn(* args,** kwargs)   文件“ /anaconda3/lib/python3.7/site->packages/zmq/eventloop/zmqstream.py”,第536行,位于     self.io_loop.add_callback(lambda:self._handle_events(self.socket,0))   _handle_events中第450行的文件“ /anaconda3/lib/python3.7/site-> packages / zmq / eventloop / zmqstream.py”     self._handle_recv()   _handle_recv中的第480行的文件“ /anaconda3/lib/python3.7/site->packages/zmq/eventloop/zmqstream.py”     self._run_callback(回调,味精)   _run_callback中的文件“ /anaconda3/lib/python3.7/site->packages/zmq/eventloop/zmqstream.py”,第432行     回调(* args,** kwargs)   文件“ /anaconda3/lib/python3.7/site-packages/tornado/stack_context.py”,   第300行,在null_wrapper中       返回fn(* args,** kwargs)     调度程序中的文件“ /anaconda3/lib/python3.7/site-packages/ipykernel/kernelbase.py”,第283行       返回self.dispatch_shell(stream,msg)     文件“ /anaconda3/lib/python3.7/site-packages/ipykernel/kernelbase.py”,行233,位于dispatch_shell中       处理程序(流,标识,味精)     在execute_request中,文件“ /anaconda3/lib/python3.7/site-packages/ipykernel/kernelbase.py”,行399       user_expressions,allow_stdin)     在do_execute中,文件“ /anaconda3/lib/python3.7/site-packages/ipykernel/ipkernel.py”,第208行       res = shell.run_cell(代码,store_history = store_history,silent =静音)     在run_cell中的文件“ /anaconda3/lib/python3.7/site-packages/ipykernel/zmqshell.py”,行537       返回super(ZMQInteractiveShell,self).run_cell(* args,** kwargs)     在run_cell中的文件“ /anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py”,行2662       raw_cell,store_history,silent,shell_futures)     _run_cell中的文件“ /anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py”,行2785       交互性=交互性,编译器=编译器,结果=结果)     在run_ast_nodes中的文件“ /anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py”,行2901       如果self.run_code(代码,结果):     在run_code中的文件“ /anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py”,第2961行       exec(code_obj,self.user_global_ns,self.user_ns)     文件“”,第3行,在       model.add(CuDNNLSTM(128,input_shape =(x_train.shape [1:]),return_sequences = True)))     _method_wrapper中的第474行的文件“ /anaconda3/lib/python3.7/site-packages/tensorflow/python/training/checkpointable/base.py”       方法(自己,* args,** kwargs)     在文件“ /anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/sequential.py”中添加第159行       层(x)     在调用中的文件“ /anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/layers/recurrent.py”,第619行       返回超级(RNN,自我)。调用(输入,** kwargs)     调用中的文件“ /anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py”,行757       输出= self.call(输入,* args,** kwargs)     通话中的第109行“ /anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/layers/cudnn_recurrent.py”       输出,状态= self._process_batch(输入,initial_state)     _process_batch中的第493行“ /anaconda3/lib/python3.7/site-packages/tensorflow/python/keras/layers/cudnn_recurrent.py”文件       is_training = True)     文件“ /anaconda3/lib/python3.7/site-packages/tensorflow/python/ops/gen_cudnn_rnn_ops.py”,行116,位于cudnn_rnn中       is_training = is_training,名称=名称)     _apply_op_helper中的文件“ /anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py”,行787       op_def = op_def)     在new_func中的文件“ /anaconda3/lib/python3.7/site-packages/tensorflow/python/util/deprecation.py”,第488行       return func(* args,** kwargs)     在create_op中,文件“ /anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/ops.py”,行3274       op_def = op_def)      init 中的文件“ /anaconda3/lib/python3.7/site-packages/tensorflow/python/framework/ops.py”,行1770       self._traceback = tf_stack.extract_stack()

InvalidArgumentError(请参阅上面的回溯):没有使用这些attrs注册任何OpKernel支持Op'CudnnRNN'。注册设备:[CPU],注册内核:   

 [[node cu_dnnlstm/CudnnRNN (defined at <ipython-input-15-580eb6f63222>:3)  = CudnnRNN[T=DT_FLOAT, direction="unidirectional", dropout=0, input_mode="linear_input", is_training=true, rnn_mode="lstm", seed=0, seed2=0](cu_dnnlstm/transpose, cu_dnnlstm/ExpandDims, cu_dnnlstm/ExpandDims_1, cu_dnnlstm/concat)]]

2 个答案:

答案 0 :(得分:0)

您确定Mac确实具有Nvidia GPU吗?此外,它支持CuDNN吗?

答案 1 :(得分:0)

您正在CPU上运行基于CuDNN的层(最有可能是CuDNNLSTM),因为CuDNN实现仅适用于具有CUDA的NVIDIA GPU,因此将无法工作。

解决方案是将CuDNNLSTM层替换为普通的LSTM层。