BenjiKCF / Neural-Net-with-Financial-Time-Series-Data

This solution presents an accessible, non-trivial example of machine learning (Deep learning) with financial time series using TensorFlow
755 stars 312 forks source link

Recurrent Neural Network.ipynb is not working properly #14

Open zhouhao-learning opened 5 years ago

zhouhao-learning commented 5 years ago

When I run your Recurrent Neural Network.ipynb, I get the following error:

InvalidArgumentError                      Traceback (most recent call last)
~/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
   1321     try:
-> 1322       return fn(*args)
   1323     except errors.OpError as e:

~/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/client/session.py in _run_fn(feed_dict, fetch_list, target_list, options, run_metadata)
   1304       # Ensure any changes to the graph are reflected in the runtime.
-> 1305       self._extend_graph()
   1306       return self._call_tf_sessionrun(

~/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/client/session.py in _extend_graph(self)
   1339       with self._graph._lock:  # pylint: disable=protected-access
-> 1340         tf_session.ExtendSession(self._session)
   1341     else:

InvalidArgumentError: No OpKernel was registered to support Op 'CudnnRNN' with these attrs.  Registered devices: [CPU], Registered kernels:
  <no registered kernels>

     [[Node: cu_dnnlstm/CudnnRNN = 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_1, cu_dnnlstm/ExpandDims_2, cu_dnnlstm/concat)]]

During handling of the above exception, another exception occurred:

InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-14-29326f3cbcc3> in <module>
      8                      steps_per_epoch=np.ceil(epoch_size/batch_size),
      9                      epochs=3)
---> 10 model.fit(X_train, y_train, callbacks=[lr_finder])
     11 
     12 lr_finder.plot_loss()

~/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)
   1346           initial_epoch=initial_epoch,
   1347           steps_per_epoch=steps_per_epoch,
-> 1348           validation_steps=validation_steps)
   1349 
   1350   def evaluate(self,

~/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/keras/engine/training_arrays.py in fit_loop(model, inputs, targets, sample_weights, batch_size, epochs, verbose, callbacks, val_inputs, val_targets, val_sample_weights, shuffle, callback_metrics, initial_epoch, steps_per_epoch, validation_steps)
    166       'metrics': callback_metrics or [],
    167   })
--> 168   callbacks.on_train_begin()
    169   callback_model.stop_training = False
    170   for cbk in callbacks:

~/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/keras/callbacks.py in on_train_begin(self, logs)
    145     logs = logs or {}
    146     for callback in self.callbacks:
--> 147       callback.on_train_begin(logs)
    148 
    149   def on_train_end(self, logs=None):

<ipython-input-10-98122f67f6ac> in on_train_begin(self, logs)
     43         '''Initialize the learning rate to the minimum value at the start of training.'''
     44         logs = logs or {}
---> 45         K.set_value(self.model.optimizer.lr, self.min_lr)
     46 
     47     def on_batch_end(self, epoch, logs=None):

~/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/keras/backend.py in set_value(x, value)
   2682       x._assign_placeholder = assign_placeholder
   2683       x._assign_op = assign_op
-> 2684     get_session().run(assign_op, feed_dict={assign_placeholder: value})
   2685 
   2686 

~/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/keras/backend.py in get_session()
    441   if not _MANUAL_VAR_INIT:
    442     with session.graph.as_default():
--> 443       _initialize_variables(session)
    444   return session
    445 

~/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/keras/backend.py in _initialize_variables(session)
    665     # marked as initialized.
    666     is_initialized = session.run(
--> 667         [variables_module.is_variable_initialized(v) for v in candidate_vars])
    668     uninitialized_vars = []
    669     for flag, v in zip(is_initialized, candidate_vars):

~/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/client/session.py in run(self, fetches, feed_dict, options, run_metadata)
    898     try:
    899       result = self._run(None, fetches, feed_dict, options_ptr,
--> 900                          run_metadata_ptr)
    901       if run_metadata:
    902         proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

~/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/client/session.py in _run(self, handle, fetches, feed_dict, options, run_metadata)
   1133     if final_fetches or final_targets or (handle and feed_dict_tensor):
   1134       results = self._do_run(handle, final_targets, final_fetches,
-> 1135                              feed_dict_tensor, options, run_metadata)
   1136     else:
   1137       results = []

~/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/client/session.py in _do_run(self, handle, target_list, fetch_list, feed_dict, options, run_metadata)
   1314     if handle is None:
   1315       return self._do_call(_run_fn, feeds, fetches, targets, options,
-> 1316                            run_metadata)
   1317     else:
   1318       return self._do_call(_prun_fn, handle, feeds, fetches)

~/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/client/session.py in _do_call(self, fn, *args)
   1333         except KeyError:
   1334           pass
-> 1335       raise type(e)(node_def, op, message)
   1336 
   1337   def _extend_graph(self):

InvalidArgumentError: No OpKernel was registered to support Op 'CudnnRNN' with these attrs.  Registered devices: [CPU], Registered kernels:
  <no registered kernels>

     [[Node: cu_dnnlstm/CudnnRNN = 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_1, cu_dnnlstm/ExpandDims_2, cu_dnnlstm/concat)]]

Caused by op 'cu_dnnlstm/CudnnRNN', defined at:
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/runpy.py", line 170, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/ipykernel_launcher.py", line 16, in <module>
    app.launch_new_instance()
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/traitlets/config/application.py", line 658, in launch_instance
    app.start()
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/ipykernel/kernelapp.py", line 505, in start
    self.io_loop.start()
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tornado/platform/asyncio.py", line 132, in start
    self.asyncio_loop.run_forever()
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/asyncio/base_events.py", line 301, in run_forever
    self._run_once()
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/asyncio/base_events.py", line 1198, in _run_once
    handle._run()
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/asyncio/events.py", line 125, in _run
    self._callback(*self._args)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tornado/ioloop.py", line 758, in _run_callback
    ret = callback()
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tornado/stack_context.py", line 300, in null_wrapper
    return fn(*args, **kwargs)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tornado/gen.py", line 1233, in inner
    self.run()
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tornado/gen.py", line 1147, in run
    yielded = self.gen.send(value)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/ipykernel/kernelbase.py", line 357, in process_one
    yield gen.maybe_future(dispatch(*args))
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tornado/gen.py", line 326, in wrapper
    yielded = next(result)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/ipykernel/kernelbase.py", line 267, in dispatch_shell
    yield gen.maybe_future(handler(stream, idents, msg))
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tornado/gen.py", line 326, in wrapper
    yielded = next(result)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/ipykernel/kernelbase.py", line 534, in execute_request
    user_expressions, allow_stdin,
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tornado/gen.py", line 326, in wrapper
    yielded = next(result)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/ipykernel/ipkernel.py", line 294, in do_execute
    res = shell.run_cell(code, store_history=store_history, silent=silent)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/ipykernel/zmqshell.py", line 536, in run_cell
    return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2819, in run_cell
    raw_cell, store_history, silent, shell_futures)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 2845, in _run_cell
    return runner(coro)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/IPython/core/async_helpers.py", line 67, in _pseudo_sync_runner
    coro.send(None)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 3020, in run_cell_async
    interactivity=interactivity, compiler=compiler, result=result)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 3185, in run_ast_nodes
    if (yield from self.run_code(code, result)):
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/IPython/core/interactiveshell.py", line 3267, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-12-671884cecb64>", line 1, in <module>
    model = build_model()
  File "<ipython-input-11-a59f75026d23>", line 3, in build_model
    model.add(CuDNNLSTM(256, input_shape=(X_train.shape[1:]), return_sequences=True))
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/keras/engine/sequential.py", line 163, in add
    layer(x)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/keras/layers/recurrent.py", line 527, in __call__
    return super(RNN, self).__call__(inputs, **kwargs)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/keras/engine/base_layer.py", line 703, in __call__
    outputs = self.call(inputs, *args, **kwargs)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/keras/layers/cudnn_recurrent.py", line 109, in call
    output, states = self._process_batch(inputs, initial_state)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/keras/layers/cudnn_recurrent.py", line 493, in _process_batch
    is_training=True)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/ops/gen_cudnn_rnn_ops.py", line 115, in cudnn_rnn
    is_training=is_training, name=name)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py", line 787, in _apply_op_helper
    op_def=op_def)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 3414, in create_op
    op_def=op_def)
  File "/home/zh/anaconda3/envs/AdaNet/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 1740, in __init__
    self._traceback = self._graph._extract_stack()  # pylint: disable=protected-access

InvalidArgumentError (see above for traceback): No OpKernel was registered to support Op 'CudnnRNN' with these attrs.  Registered devices: [CPU], Registered kernels:
  <no registered kernels>

     [[Node: cu_dnnlstm/CudnnRNN = 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_1, cu_dnnlstm/ExpandDims_2, cu_dnnlstm/concat)]]

My environment is: Tensorflow==1.9 Keras==2.2.4

@BenjiKCF What is the cause of this? What should I do? There is no environmental requirement in your description.

BenjiKCF commented 5 years ago

I guess you are not using a Nvidia GPU or you didn't install Cuda and Cudnn Just Change CudnnRNN to a normal LSTM and try it. LSTM