Skip to content

NickolayBauer/NN-MIDI

Repository files navigation

NN-MIDI

Преобразуем одноканальные (с одним инструментом) midi в - текстовые ноты: Пройдёмся по midi, с помощью функции

<< midi_to_note("samples/1.mid")
>> ['C5', 'C6', '-', 'A#5', '-', 'F#5', '-', 'A#5']

Обратная для midi_to_note() функция note_to_midi()

<< note_to_midi('sample.mid', ['C5', 'C6', '-', 'A#5', '-', 'F#5', '-', 'A#5'] )
>> created new file "sample.mid"

Затем необходимо преобразовать список нот в матрицу с помощью функции convert_to_matrix(notes_array, luft) luft необходим для того, чтобы ограничить количество октав (длину векторов, которые будет возвращать функция)

<< convert_to_matrix(['C5', 'C6', '-', 'A#5', '-', 'F#5', '-', 'A#5'], 4)
>>
>> [0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 216, 255, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 216]
>> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 255, 0]
>> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 255, 0, 102, 0, 0, 0]
>> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>> [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 255, 0]

Создадим несколько .mid файлов, с которыми будет сравниваться основной, преобразуем их матрицы и запишем в .txt

-/text_presets
---/0.txt
---/1.txt
---/2.txt
---/3.txt
---/4.txt

Запустим модуль neural_network

>> {'classes': 0, 'probabilities': array([0.5215701, 0.4784299])}
>> {'classes': 0, 'probabilities': array([0.5240148, 0.4759852])}
>> {'classes': 0, 'probabilities': array([0.52296138, 0.47703862])}
>> {'classes': 0, 'probabilities': array([0.52408582, 0.47591418])}
>> {'classes': 0, 'probabilities': array([0.52055538, 0.47944462])}
>> {'classes': 0, 'probabilities': array([0.5215701, 0.4784299])}
>> {'classes': 0, 'probabilities': array([0.5173605, 0.4826395])}

Эти списки показывают, насколько основной файл, разбитый по чанкам соответсвует другим семплам

Введение

Нейронная сеть - Иску́сственная нейро́нная се́ть — математическая модель, а также её программное или аппаратное воплощение, построенная по принципу организации и функционирования биологических нейронных сетей — сетей нервных клеток живого организма.

Для классификации изображений часто используются свёрточные нейронные сети, нацеленные на эффективное распознование образов.

Свёрточная нейроная сеть


— специальная архитектура искусственных нейронных сетей, предложенная Яном Лекуном в 1988 году
Использует некоторые особенности зрительной коры, в которой были открыты так называемые простые клетки, реагирующие на прямые линии под разными углами, и сложные клетки, реакция которых связана с активацией определённого набора простых клеток. Таким образом, идея свёрточных нейронных сетей заключается в чередовании свёрточных слоёв

alt text

Интерпретация свёрточной нейронной сети

Работа свёрточной нейронной сети обычно интерпретируется как переход от конкретных особенностей изображения к более абстрактным деталям, и далее к ещё более абстрактным деталям вплоть до выделения понятий высокого уровня. При этом сеть самонастраивается и вырабатывает сама необходимую иерархию абстрактных признаков (последовательности карт признаков), фильтруя маловажные детали и выделяя существенное.
Подобная интерпретация носит скорее метафорический или иллюстративный характер. Фактически «признаки», вырабатываемые сложной сетью, малопонятны и трудны для интерпретации настолько, что в практических системах не особенно рекомендуется пытаться понять содержания этих признаков или пытаться их «подправить», вместо этого рекомендуется усовершенствовать саму структуру и архитектуру сети, чтобы получить лучшие результаты. Так, игнорирование системой каких-то существенных явлений может говорить о том, что либо не хватает данных для обучения, либо структура сети обладает недостатками и система не может выработать эффективных признаков для данных явлений.

alt text

Применение нейронных сетей

...

Библиотеки машинного обучения для Python

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

  • Scikit-learn
  • Theano
  • Pandas
  • Seaborn
  • Torch
Однако, мною была выбрана библиотека Tensorflow, поскольку ...

Библиотека машинного обучения tensorflow

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

Свёрточная нейронная сеть представляет собой последовательность из слоёв Слои могут быть:

  • Свёрточным
  • Слоями макспулинга
  • Полносвязными

Свёрточные слои

....

Макспулинг

....

Полносвязные слои

....

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages