Блокнот Jupyter, ошибка "нет модуля с именем music21" при использовании floydhub

Я пытаюсь использовать библиотеку music21 для доступа к файлам midi для проекта машинного обучения. Код скомпилирован в блокноте jupyter, и я использую floydhub для питания графического процессора. Но я получаю ошибку ниже:

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-1a565b42a89a> in <module>()
      2 import pickle
      3 import numpy
----> 4 from music21 import converter, instrument, note, chord
      5 from keras.models import Sequential
      6 from keras.layers import Dense

ImportError: No module named 'music21'

Код прекрасно работает с использованием возвышенного текста, и когда я компилирую его, просто используя блокнот jupyter, floydhub, кажется, мешает, но я не знаю, как именно.

Вот полный код:

import glob
import pickle
import numpy
from music21 import converter, instrument, note, chord
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import BatchNormalization
from keras.layers import Dropout
from keras.layers import LSTM
from keras.layers import Activation
from keras.utils import np_utils
from keras.callbacks import ModelCheckpoint

def get_notes():

    """ Get all the notes and chords from the midi files in the ./midi_songs 
directory """

    notes = []

    for file in glob.glob("smaller classical music repertoir/*.mid"):
         midi = converter.parse(file)

        notes_to_parse = None

        parts = instrument.partitionByInstrument(midi)

       if parts: # file has instrument parts
            notes_to_parse = parts.parts[0].recurse()
        else: # file has notes in a flat structure
            notes_to_parse = midi.flat.notes

        for element in notes_to_parse:
            if isinstance(element, note.Note):
                notes.append(str(element.pitch))
            elif isinstance(element, chord.Chord):
                notes.append('.'.join(str(n) for n in element.normalOrder))

    with open('C:/Users/emili/Documents/python projects/music data/notes1', 
'wb') as filepath:
        pickle.dump(notes, filepath)

   return notes


notes = get_notes()

# create mapping of unique chars to integers
chars = sorted(list(set(notes)))
char_to_int = dict((c, i) for i, c in enumerate(chars))

# summarize the loaded data
n_chars = len(notes)
n_vocab = len(chars)
print ("Total Characters: ", n_chars)
print ("Total Vocab: ", n_vocab)

# prepare the dataset of input to output pairs encoded as integers
seq_length = 100
dataX = []
dataY = []
for i in range(0, n_chars - seq_length, 1):
    seq_in = notes[i:i + seq_length]
    seq_out = notes[i + seq_length]
    dataX.append([char_to_int[char] for char in seq_in])
    dataY.append(char_to_int[seq_out])
n_patterns = len(dataX)
print ("Total Patterns: ", n_patterns)

# reshape X to be [samples, time steps, features]
X = numpy.reshape(dataX, (n_patterns, seq_length, 1))

# normalize
X = X / float(n_vocab)

# one hot encode the output variable
y = np_utils.to_categorical(dataY)

# define the LSTM model
model = Sequential()
model.add(LSTM(50, input_shape=(X.shape[1], X.shape[2]), 
return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(46))
model.add(Dropout(0.2))
model.add(Dense(y.shape[1], activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam')

# define the checkpoint
filepath="weights-improvement-{epoch:02d}-{loss:.4f}-bigger.hdf5"
checkpoint = ModelCheckpoint(filepath, monitor='loss', verbose=1, 
save_best_only=True, mode='min')
callbacks_list = [checkpoint]

# fit the model
model.fit(X, y, epochs=1000, batch_size=64, callbacks=callbacks_list)

Код просто пытается найти шаблоны в музыкальных нотах, чтобы иметь возможность генерировать музыку относительно примечания, но часть генерации находится в другом коде.

0 ответов

Другие вопросы по тегам