2 | | |
3 | | {{{#!box type=todo |
4 | | Мислам дека тука треба прво да се напише и опише накратко методологијата која сега е на крај. Каква е и зошто е таква. Да се излистаат чекорите, а потоа за секој од чекорите да се напише кои техники и алатки се користени. |
5 | | }}} |
6 | | |
7 | | |
8 | | {{{#!box type=todo |
9 | | Следниот параграф се однесува на дел од чекорите во методологијата, па соодветно треба да биде после тоа. Исто параграфот е малку мешан, бидејќи меша методи, техники и алатки. Прво треба да се разграничи кој метод, па која техника, па која алатка. метод и конкретен софтвер. Треба да се продискутира методот (врз основа на што се базира софтверот) и што е специфично или различно тука во врска со тој метод. Тука ако стои опис на методологијата, не се битни сите детали, туку само попис, а потоа во соодветни поглавја да се образложи како тој метод е применет (во соодветно поглавје) или како тој софтвер е применет (во соодветно поглавје). |
10 | | }}} |
11 | | |
12 | | Имплементацијата прикажана во рамките на овој труд е креирана врз основа на тутотијал за креирање на музика со користење на LSTM и Keras, и претставува адаптација на кодот достапен на https://github.com/Skuldur/Classical-Piano-Composer, за генерирање на класични дела, во код за генерирање македонска народна мелодија, преку тестирање на разни параметри за моделот на невронската мрежа, менување на бројот на епохи за тренирање на моделот, менување на должината на низите кои ќе бидат користени за предвидување на следна нота во резултантната мелодија и користење на CuDNNLSTM слој во архитектурата на мрежата наместо LSTM слој. |
13 | | |
14 | | {{{#!box type=todo |
15 | | Следното не припаѓа тука, за во имплементација. |
16 | | }}} |
17 | | |
18 | | |
19 | | Туторијалот е достапен овде: https://towardsdatascience.com/how-to-generate-music-using-a-lstm-neural-network-in-keras-68786834d4c5. |
20 | | |
21 | | {{{#!box type=todo |
22 | | Како што реков, следното треба најгоре некаде. |
23 | | }}} |
| 11 | |
| 12 | Оваа методологија е најчесто користена во процесот на автоматско генерирање на музика со машинско учење. |
| 13 | |
| 14 | Увезувањето на податоците е остварено со помош на циклус за повторување, кој ги парсира сите музички документи во папката со податочното множество како музички поток - Stream, и е имплементирано со помош на music21. Откако се исчитани музичките документи и претставени во формат кој може да се обработува се анализира секој дел од секој музички документ дали е нота или акорд и се зачувува во листа на македонски ноти, соодветно како објект нота или објект акорд, односно се креира вокабулар од ноти. |
| 15 | |
| 16 | За да можеме да преминеме на следниот чекор, односно креирање на моделот, беше потребно да се дефинираат низи, влезна и излезна, за невронската мрежа. Најпрво беа конвертирани нотите во форма погодна за работење, односно речник од енумерирани висини на нотите, зачувани во цели броеви, а потоа со помош на модулот numpy, низата за влез во невронската м. беше преобликувана во соодветниот формат. Излезната низа е претставена во формат на категорични податоци. |
| 17 | |
| 18 | Откако беа дефинирани низите за невронската мрежа беше дефиниран секвенционен модел на невронската мрежа, составен од 3 CuDNNLSTM слоја, 3 Dropout слоја, 2 Dense слоја и еден слој со активирачка функција. Моделот беше дефиниран со помош на програмскиот интерфејс Keras, кој функционира врз платформата Tensorflow. |
| 19 | |
| 20 | Тренирањето на моделот е имплементирано со функцијата fit од Keras, и се повикува врз дефинираниот модел. Тренирав повеќе модели со разни вредности на хиперпараметрите на невронската мрежа. |
| 21 | |
| 22 | При текот на тренирањето, со помош на множеството функции callbacks, достапни од Keras, поточно со помош на функцијата ModelCheckpoint, беа зачувувани потадоците за функцијата на загуба на податоци за секоја епоха, врз основа на која можеме да ја процениме ефикасноста на моделот. |
| 23 | |
| 24 | Откако беа тренирани моделите, следниот чекор во генерирањето на мелодијата беше вчитување на минималните тежини од тренираните модели во компајлирањето на моделот, по што таквиот модел се користи во функција за генерирање македонски ноти. Функцијата генерира 500 ноти со случаен почеток од влезот на н.м. и на излез добиваме низа предвидени ноти. |
| 25 | |
| 26 | Последниот чекор во генерирањето на мелодијата е преведување на нотите во формат кој што може да се слушне, односно во МИДИ формат, со што би требало да добиеме резултантна мелодија која ќе потсетува на Македонска народна мелодија. |
| 27 | |
| 28 | Имплементацијата прикажана во рамките на овој труд е креирана врз основа на техниките опишани во тутотијалот за генерирање на класични музички дела достапен на https://github.com/Skuldur/Classical-Piano-Composer, додека мојот пристап за адаптирање на кодот од туторијалот во код за генерирање македонска народна мелодија е преку тестирање на разни параметри за моделот на невронската мрежа, менување на бројот на епохи за тренирање на моделот, менување на должината на низите кои ќе бидат користени за предвидување на следна нота во резултантната мелодија и користење на CuDNNLSTM слој во архитектурата на мрежата наместо LSTM слој. |