Найти в Дзене
КРИНЖ ТИКТОК

Нейронная сеть для генерации музыки [ГАЙД]

Всем привет, последние пару месяцев я занимался изучением Рекурсивных нейронных сетей, а в частности построение их архитектуры с использованием библиотеки keras.
Данной в данной статье я хочу поделится результатами своих исследований. Ну что же, начнём наверное с базового понимая словосочетания "Рекурсивная нейронная сеть". Вики говорит что это: Вид нейронных сетей, работающих с данными переменной длины. Модели рекурсивных сетей используют иерархические структуры образцов при обучении. Например, изображения, составленные из сцен, объединяющих подсцены, включающие много объектов. Я понимаю что скорее всего сейчас 80% всех читателей закрыли эту статью, но тех кто всё таки дочитал до этого момента - поздравляю, 50% пути уже пройдено.
В данном примере мы будем использовать НС с учителем, сейчас объясню что это такое.
Тренировка модели с учителем предусматривает собой то, что мы уже знаем ответ к поставленной задаче. Например мы даём НС для распознавания рукописного текста написанную

Всем привет, последние пару месяцев я занимался изучением Рекурсивных нейронных сетей, а в частности построение их архитектуры с использованием библиотеки keras.
Данной в данной статье я хочу поделится результатами своих исследований.

Ну что же, начнём наверное с базового понимая словосочетания "Рекурсивная нейронная сеть". Вики говорит что это:

Вид нейронных сетей, работающих с данными переменной длины. Модели рекурсивных сетей используют иерархические структуры образцов при обучении. Например, изображения, составленные из сцен, объединяющих подсцены, включающие много объектов.

Я понимаю что скорее всего сейчас 80% всех читателей закрыли эту статью, но тех кто всё таки дочитал до этого момента - поздравляю, 50% пути уже пройдено.

-2

В данном примере мы будем использовать НС с учителем, сейчас объясню что это такое.
Тренировка модели с учителем предусматривает собой то, что мы уже знаем ответ к поставленной задаче. Например мы даём НС для распознавания рукописного текста написанную от руки цифру "5", и говорим ей что это 5, даём "10" и говорим что это 10 и тд. В процессе обучения НС сама сможет определять цифры которые вы ей даёте. Данный результат достигается благодаря калибровки весов.

И так, мы будем делать НС которая будет писать музыку.
Для примера я буду использовать аудио-файлы формата .mid которые представляют собой набор нот. Мы должны будем прочитать этот файл, разбить его на массив нот, присвоить каждой ноте свой уникальное число, перевести его в число от 0 до 1 путём деления на самое большое число всех этих чисел, сформировать общий массив последовательности нот, преобразовать его к "правильной" последовательности путём вытеснения старых нот новыми

Например у вас есть набор чисел 1, 2, 3, 4, 5, логично предположить что следующим числом будет 6, следовательно мы сдвигаем все числа на 1 позицию влево(2 станет на место 1, 3 на место 2, 4 на место 3, 5 на место 4) у нас получится 2, 3, 4, 5, и останется свободное место в которое мы вставим 6 и у нас получится 2, 3, 4, 5, 6 => 3, 4, 5, 6, 7 => 4, 5, 6, 7, 8 и тд.

Далее мы запускаем процесс обучения, длится он может от 4 до 10 часов(на видеокарте Tesla K80).
После тренировки мы получаем модель которую мы будем использовать для генерации нашей музыки.

-3

Последовательность нот мы также будем генерировать методом "вытеснения", но где же нам взять первые ноты? Ответ очень прост, мы просто сгенерируем рандомную последовательность нот, которые потом в процессе генерации просто вырежем.

Ну вот и всё, надеюсь я понятно всё объяснил, надеюсь на ваши отзывы и критику

Буду благодарен за любою критику
Задавайте свои вопросы в этой теме