BShakhovsky / PolyphonicPianoTranscription

Recurrent Neural Network for generating piano MIDI-files from audio (MP3, WAV, etc.)
https://magenta.tensorflow.org/onsets-frames
230 stars 41 forks source link

cannot import name 'CuDNNLSTM' #4

Closed Glooring closed 2 years ago

Glooring commented 3 years ago

I'm running your code in '2 Training, Validation, Testing.ipynb', but I cannot import the CuDNNLSTM.

After I run this:

from IPython.display       import SVG
from matplotlib            import pyplot as plt
%config InlineBackend.figure_format = 'retina'

from glob                  import glob
from os                    import makedirs
from os.path               import exists, isdir

import numpy as np

from keras                 import backend as K
from keras.callbacks       import ProgbarLogger
from keras.initializers    import VarianceScaling
from keras.layers          import Activation, BatchNormalization, Bidirectional, concatenate, \
                                  Conv2D, Dense, Input, CuDNNLSTM, MaxPool2D, Reshape
from keras.losses          import mean_squared_error
from keras.models          import load_model, Model
from keras.utils.vis_utils import model_to_dot

from librosa               import midi_to_hz
from sklearn.metrics       import auc, roc_curve
from sklearn.preprocessing import binarize

from magenta.music.sequences_lib                           import pianoroll_to_note_sequence
from magenta.models.onsets_frames_transcription.infer_util import sequence_to_valued_intervals
from mir_eval.transcription                                import precision_recall_f1_overlap as Overlap
from mir_eval.transcription_velocity                       import precision_recall_f1_overlap as OverlapVolumes

I get this error:

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-2-322c94c834dc> in <module>()
     12 from keras.callbacks       import ProgbarLogger
     13 from keras.initializers    import VarianceScaling
---> 14 from keras.layers          import Activation, BatchNormalization, Bidirectional, concatenate,                                   Conv2D, Dense, Input, CuDNNLSTM, MaxPool2D, Reshape
     15 from keras.losses          import mean_squared_error
     16 from keras.models          import load_model, Model

ImportError: cannot import name 'CuDNNLSTM'

---------------------------------------------------------------------------
NOTE: If your import is failing due to a missing package, you can
manually install dependencies using either !pip or !apt.

To view examples of installing some common dependencies, click the
"Open Examples" button below.
---------------------------------------------------

Should I use LSTM instead of CuDNNLSTM? Thank you!

BShakhovsky commented 3 years ago

Hello,

Yes, it seems so, you can simply use LSTM instead of CuDNNLSTM everywhere. These two layers are basically the same, just CuDNN is faster to train compared to the regular TensorFlow kernel.

From TensorFlow 2.0 keras.layers.CuDNNLSTM layer has been deprecated, and LSTM layer will automatically use the CuDNN kernel by default when NVIDIA GPU is available (and CuDNN is installed). I found this information there: https://keras.io/guides/working_with_rnns/#performance-optimization-and-cudnn-kernels

Glooring commented 3 years ago

Thank you very much!