[PYTHON] Ich habe versucht, das Musikgenre anhand des Songtitels im Recurrent Neural Network vorherzusagen

Vorhersage des Genres anhand des Songtitels

Ich möchte RNN studieren, weiß aber nicht, was ich machen soll, deshalb habe ich mich mit meinen Senioren beraten.

Wai "Senior, ich möchte RNN mit TensorFlow studieren. Gibt es ein gutes Fach?" Senior "Laut. Ich bin beschäftigt, also werde ich dich später verlassen." Wai "..."

Lassen Sie uns das Musikgenre anhand des Songtitels vorhersagen. .. .. (´ ・ ω ・ `)

Datensatz eingeben

In der Songtitelliste von iTunes gibt es einen Eintrag namens Genre. Vielleicht gibt es einen Rock-ähnlichen Songtitel oder ein Pop-ähnliches Songtitelmuster.

Extrahieren Sie Daten aus iTunes und speichern Sie sie in einer CSV-Datei

train_data.csv


Ho!,2
Deuces Are Wild,2
575,4
Filme,4
KICKS!,2
Raise it all,4
Nichts(movie ver.),4
Moratorium Mädchen,4
You've Got To Hide Your Love Away,0
Ordinary,5
Was,4
Schwertjagd plötzlich,4
Borderline,4
Timber,4
M.I.Y.A.,2
Sommertag 1993,4
broken bone,4

Ein Datensatz wie dieser. Lehrerdaten 2259, Testdaten 565. Die Zahlen in der rechten Spalte entsprechen dem Genre.

categories.csv


Classical,0
R&B,1
Alternative,2
Pop,3
Rock,4
Rap,5
Punk,6
Dance & House,7

So was.

Ich habe versucht zu implementieren

Dies ist der eigentliche Code

Es scheint nicht in Ordnung zu sein, die Morphologie des Songtitels zu analysieren, also haben wir dieses Mal Character RNN übernommen Geben Sie Zeitreihendaten für jedes Zeichen in RNN ein, um Songtitelmuster zu lernen

input_data.py


 def data2id(self, data):
    self.__create_dict()
    data = [train.lower().replace(' ', '') for train in data]
    return [[[self.char_dict[train[i]]] if len(train) > i else [0] for i in range(self.max_length)] for train in data]
  

  def __create_dict(self, data_dir ='../data/'):
    data = self.__create_batchs(data_dir)
    data += self.__create_batchs(data_dir, test=True)
    sings = [d[0] for d in data]
    word = ''.join(sings).lower().replace(' ','')
    word_uniq = list(set(word))
    self.char_dict = {k:i for i,k in enumerate(word_uniq)}

In diesem Teil wird der Songtitel in eine Form konvertiert, die dem Netzwerk zugeführt werden kann, indem jedem Charakter eine ID zugewiesen wird.

main.py


def cell():
    return tf.contrib.rnn.BasicRNNCell(num_units=NODE_NUM, activation=tf.nn.tanh) #Zelle der mittleren Schicht
cells = tf.contrib.rnn.MultiRNNCell([cell() for _ in range(NUM_LAYER)])
outputs, states = tf.nn.dynamic_rnn(cell=cells, inputs=x, dtype=tf.float32, time_major=False)

Verwenden Sie dynamic_rnn, da der Songtitel eine variable Länge hat. Die mittlere Schicht hat 128 Einheiten und zwei Schichten sind gestapelt (super geeignet), und die Zelle ist BasicRNN.

Ergebnis

Korrekt. .. Jep. .. Ich kann es nicht einmal sehen. Die Songs in meinen iTunes sind zuerst auf Rock ausgerichtet. Darüber hinaus ist es für Menschen ziemlich schwierig, das Genre aus dem Songtitel zu erraten. Sie können also das Ergebnis erwarten, oder?

[TRAIN] loss : 1.349962, accuracy : 0.656250
[TEST loss : 1.369359, accuracy : 0.571681
{'Classical': 0.0, 'R&B': 0.0, 'Alternative': 0.0, 'Pop': 0.0, 'Rock': 1.0, 'Rap': 0.0, 'Punk': 0.0, 'Dance & House': 0.0}

Ich habe versucht, bis zu einem gewissen Grad zu lernen. Die Zeilen 1 und 2 sind Zug, Testverlust und korrekte Antwortrate. Die dritte Zeile ist das Verhältnis des tatsächlichen Netzwerkvorhersageergebnisses zu den Testdaten. Ja, ich bestehe darauf, dass alles Rock ist. Da es fast keine Korrelation zwischen dem Songtitel und dem Genre gibt, führt das Beharren darauf, dass sie alle Rock sind, zu einem minimalen Verlust. (Weil die Daten auf Rock voreingenommen sind ...) Ich wünschte ich hätte einen besseren Datensatz. ..

Impressionen

Es war eine Praxis, wie man RNN-bezogene APIs verwendet! !! Ich bin der Meinung, dass die Implementierung falsch ist, daher wäre ich dankbar, wenn Sie mir verschiedene Dinge beibringen könnten! !! !!

Recommended Posts

Ich habe versucht, das Musikgenre anhand des Songtitels im Recurrent Neural Network vorherzusagen
Ich habe versucht, Musik im Neural Network in Dur / Moll zu klassifizieren
Ich habe versucht, die Genauigkeit meines eigenen neuronalen Netzwerks zu verbessern
Holen Sie sich den Songtitel aus dem Titel des von Ihnen gesungenen Videos
Ich habe versucht, das grundlegende Modell des wiederkehrenden neuronalen Netzwerks zu implementieren
Ich habe versucht, das Python-Skript unter Windows 10 von 2.7.11 auf 3.6.0 zu ändern
Ich habe die übliche Geschichte ausprobiert, Deep Learning zu verwenden, um den Nikkei-Durchschnitt vorherzusagen
Ich habe versucht, das Verhalten des neuen Koronavirus mit dem SEIR-Modell vorherzusagen.
Ich habe versucht, die Trapezform des Bildes zu korrigieren
Ich habe das neuronale Netzwerk auf dem eigentlichen FPGA betrieben
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
Ich habe versucht, die Verschlechterung des Lithium-Ionen-Akkus mithilfe des Qore SDK vorherzusagen
[IBM Cloud] Ich habe versucht, über Cloud Funtions (Python) auf die Tabelle Db2 on Cloud zuzugreifen.
Ich habe versucht, das Vorhandensein oder Nichtvorhandensein von Schnee durch maschinelles Lernen vorherzusagen.
Ich habe versucht, die Daten des Laptops durch Booten unter Ubuntu zu retten
Ich habe versucht, den Grad der Koronavirusinfektion auf der Seekarten-Wärmekarte anzuzeigen
Ich habe versucht, die Anzahl der mit dem Coronavirus infizierten Personen unter Berücksichtigung der Auswirkung des Verzichts auf das Ausgehen vorherzusagen
Einführung in die KI-Erstellung mit Python! Teil 2 Ich habe versucht, den Hauspreis in Boston mit einem neuronalen Netz vorherzusagen
Ich habe versucht, Iris aus dem Kamerabild zu erkennen
Ich habe versucht, die Grundform von GPLVM zusammenzufassen
Ich habe versucht, das Spiel in der J League vorherzusagen (Datenanalyse)
Die Geschichte eines neuronalen Netzwerks der Musikgeneration
Ich habe versucht, vier Optimierungsmethoden für neuronale Netze zusammenzufassen
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Ich habe versucht, die Stimmen der Sprecher zu klassifizieren
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe versucht, den Sieg oder die Niederlage der Premier League mit dem Qore SDK vorherzusagen
Ich habe versucht, es einfach zu machen, die Einstellung des authentifizierten Proxys auf Jupyter zu ändern
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich möchte das symbolische Linkziel von / lib64 unter CentOS von / usr / lib64 in / my-lib64 ändern
Ich habe versucht, die Standortinformationen des Odakyu-Busses zu erhalten
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Verwenden Sie die Swagger-Benutzeroberfläche. Wenn Sie einen Swagger-UI-ähnlichen Stil wünschen, kopieren Sie einfach die gesamte Datei unter / dist unter https://github.com/swagger-api/swagger-ui. Danach schreiben Sie einfach hier in index.html die URL der yml-Datei um. Wenn Sie der Meinung sind, dass Sie @ApiModel oder @ApiModelProperty nicht finden können, wurden übrigens anscheinend alle Anmerkungen zur Schemadefinition in @Schema integriert. Emotionsanalyse mit Java, Swagger, OpenAPI, Micronaut Natural Language Processing! Ich habe versucht, die Bewertung anhand des Überprüfungstextes vorherzusagen
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
[Maschinelles Lernen] Ich habe versucht, die Theorie von Adaboost zusammenzufassen
Ich habe versucht, die Infektion mit einer neuen Lungenentzündung mithilfe des SIR-Modells vorherzusagen: ☓ Wuhan ed. ○ Hubei ed.
Ich habe versucht, die Sprachen, die Anfänger von nun an lernen sollten, absichtlich zusammenzufassen
Ich habe versucht, das lokale Minimum der Goldstein-Preis-Funktion zu bekämpfen
So zeichnen Sie einfach die Struktur eines neuronalen Netzwerks in Google Colaboratory mit "convnet-drawer"
Ich habe versucht, die Objekte aus dem Bild des Steak-Sets zu sortieren. ① Objekterkennung
Ich habe versucht, den Ipython-Cluster unter AWS auf das Minimum zu starten
Ich habe ein Convolutional Neural Network (CNN) mit einem TensorFlow-Tutorial zur Cloud9-Klassifizierung handgeschriebener Bilder ausprobiert.
Ich habe versucht, verschiedene Informationen von der Codeforces-API abzurufen
Ich habe versucht, den Trend der Anzahl der Schiffe in der Bucht von Tokio anhand von Satellitenbildern zu ermitteln.
Ich habe versucht, den Verkauf von Spielesoftware mit VARISTA anhand des Artikels von Codexa vorherzusagen
Ich habe mein eigenes neuronales 3-Layer-Forward-Propagation-Netzwerk erstellt und versucht, die Berechnung genau zu verstehen.
Ich habe versucht, die Anzahl der im Inland infizierten Menschen der neuen Korona mit einem mathematischen Modell vorherzusagen
Ich habe versucht, die Objekte aus dem Bild des Steak-Sets zu sortieren. ② Sortieren der Überlappungsnummern
Ich möchte Tag-Informationen (Titel und Künstler) einer Musikdatei (flac, wav) extrahieren.
Ich habe versucht, die Höhen und Tiefen des Schlusskurses des Aktienkurses von Guru Navi mit TensorFlow vorherzusagen (Fortschritt)
Ich habe versucht, eine Umgebung von MkDocs unter Amazon Linux zu erstellen
[Linux] Ich habe versucht, die Ressourcenbestätigungsbefehle zusammenzufassen
Ich habe versucht, den Index der Liste mithilfe der Aufzählungsfunktion abzurufen
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Ich habe versucht, den auf Papier gestempelten Stempel mit OpenCV zu digitalisieren
Ich habe versucht, einen Sender auf der IoT-Plattform "Rimotte" zu registrieren.