[PYTHON] Ich möchte PyTorch verwenden, um so etwas wie den Text von Japari Park zu generieren

Einführung

Neulich wurde die Entwicklung der Deep-Learning-Bibliothek "Chainer" von Preferred Networks (PFN) abgeschlossen. In meinem Labor sind wir in Tensorflow-Gruppe und Chainer-Gruppe unterteilt und haben miteinander um Reittiere konkurriert, aber die Chainer-Gruppe wurde am Ende der Entwicklung eliminiert (sie scheint scharf zu sein).

Es tut mir sehr leid, dass ich Chainer gewohnheitsmäßig verwendet habe, und gleichzeitig bin ich sehr dankbar, dass ich ein benutzerfreundliches Framework (Gläubige) bereitgestellt habe.

Nun, diese PFN-Firma scheint sich der Entwicklung von PyTorch zuzuwenden. Außerdem höre ich, dass PyTorch selbst viele Aspekte hat, die der Beschreibung von Chainer ähneln. Außerdem habe ich bei meinen Recherchen hauptsächlich CNN und GAN verwendet, aber RNN nicht angesprochen. .. .. ..

** "Dies ist eine gute Gelegenheit zu lernen, wie man PyTroch benutzt und wie RNN funktioniert ???" **

Also habe ich das Buch "Deep Learning from Zero ②" aus demselben Labor ausgeliehen und den Inhalt von RNN ausgeliehen. Ich habe es so gelesen wie es war und es mit PyTorch implementiert. Dieser Artikel ist ein Memorandum.

Um ehrlich zu sein, ** "Ich verstehe RNN nicht" ** ** "Ich weiß nicht, wie man PyTorch benutzt" ** ** "Lehrer von weisen Leuten" ** Ich habe einen Artikel gemacht, weil es sich anfühlt.

Der Quellcode wird auf Github veröffentlicht. ~~ Übrigens habe ich "Kemono Friends" noch nie gesehen. ~~ Ich habe nur eine Folge gesehen.

Inhalt dieses Artikels

Was ist RNN oder LSTM?

RNN ist eine Abkürzung für Recurrent Neural Network, ein neuronales Netzwerk, das hauptsächlich für Zeitreihendaten verwendet wird. Im Gegensatz zu normalen neuronalen Netzwerkschichten haben RNN-Schichten einen Schleifenpfad, der ihre Ausgabe als Eingabe verwendet. Dies hat die Funktion, dass versteckte Informationen für jede Zeitreihe beibehalten werden können. LSTM ist eine Ableitung von RNN, die der Schleifenstruktur das Konzept des Gates hinzufügt.

Eine ausführliche Erklärung finden Sie unter hier oder hier anstelle meiner Erklärung. Es ist viel einfacher zu verstehen.

Erstellen eines Datensatzes

Es wird gesagt, dass die Datenliste, die so geschrieben wurde, dass sie die Wortinformationen in den Textdaten nicht abdeckt, als "Korpus" bezeichnet wird. Es scheint, dass den Wörtern in diesem Korpus IDs zugewiesen sind, um die Handhabung als ID-Liste zu vereinfachen. Diesmal war es jedoch mühsam, die Wörter zu trennen (benutze ~~ MeCab ~~), also habe ich jedem Zeichen, das in den Texten erscheint, eine ID zugewiesen und '^' hinzugefügt, um den Anfang und das Ende der Texte anzugeben. Ich fügte hinzu'_'.

Unten finden Sie die ID-Liste und die entsprechenden Wörter.

{'^': 0, 'W': 1, 'e': 2, 'l': 3, 'c': 4, 'o': 5, 'm': 6, ' ': 7, 't': 8, 'Yo': 9, 'U.': 10, 'Dies': 11, 'Damit': 12, 'Das': 13, 'Turbolader': 14, 'Pa': 15, 'Li': 16, '- -': 17, 'Ku': 18, '!': 19, 'jetzt': 20, 'Tag': 21, 'Ebenfalls': 22, 'Machen': 23, 'Tsu': 24, 'Ta': 25, 'Nieder': 26, 'Ba': 27, 'Groß': 28, 'Laut': 29, 'Gi': 30, 'Aber': 31, 'Mm': 32, 'Hoch': 33, 'Et al.': 34, 'Oder': 35, 'Zu': 36, 'Lol': 37, 'ich': 38, 'e': 39, 'Wenn': 40, 'Fu': 41, 'Les': 42, 'Zu': 43, 'Hektik': 44, '嘩': 45, 'Shi': 46, 'Hand': 47, 'Su': 48, 'Tsu': 49, 'Chi': 50, 'Ja': 51, 'Mich': 52, 'Naka': 53, 'Gut': 54, 'Ke': 55, 'von': 56, 'Ist': 57, 'Bleibe': 58, 'Nana': 59, 'Buch': 60, 'Dies': 61, 'Liebe': 62, 'Ah': 63, 'Ru': 64, 'Ho': 65, 'Du': 66, 'Hand': 67, 'Zu': 68, 'Einer': 69, 'damit': 70, 'Öffnung': 71, 'Robust': 72, '(': 73, 'Beeindruckend': 74, '・': 75, 'Tsu': 76, 'Su': 77, ')': 78, 'Aussehen': 79, 'Ta': 80, 'Zehn': 81, 'Mann': 82, 'Farbe': 83, 'Ist': 84, 'Faszination': 85, 'Re': 86, 'Gehen': 87, 'Abend': 88, 'Leben': 89, 'Himmel': 90, 'Finger': 91, 'Wann': 92, 'Schwer': 93, 'Hallo': 94, 'Ji': 95, 'Gut': 96, 'Wissen': 97, 'Ri': 98, 'Shake': 99, 'Mukai': 100, '\u3000': 101, 'Zu': 102, 'La': 103, 'Bu': 104, 'Le': 105, 'Hmm': 106, 'Pu': 107, 'Auge': 108, 'Sie sehen': 109, 'Nur': 110, 'Selbst': 111, 'Yu': 112, 'Roh': 113, 'Ki': 114, 'Dekoration': 115, 'Ku': 116, 'Länge': 117, 'Mann': 118, 'Machen': 119, 'Es tut mir Leid': 120, '♡': 121, 'N': 122, 'i': 123, 'y': 124, 'u': 125, 'Ro': 126, 'Yu': 127, 'Gesicht': 128, 'Warten': 129, 'Öffnen': 130, 'Tür': 131, 'Ge': 132, 'Traum': 133, 'Pa': 134, 'Wort': 135, 'Fortsetzung': 136, 'Gu': 137, 'ich': 138, 'D.': 139, 'ich': 140, 'Bedienung': 141, 'Ki': 142, 'Stur': 143, 'Zhang': 144, 'EIN': 145, 'Sa': 146, 'Oh': 147, 'einstellen': 148, 'Linie': 149, 'Beeindruckend': 150, 'Oben': 151, 'einer': 152, 'Suspendiert': 153, 'Leben': 154, 'B.': 155, 'Ze': 156, 'Eh': 157, '、': 158, 'Wende': 159, '?': 160, 'O': 161, 'h': 162, 'Osten': 163, 'Was': 164, 'Gebell': 165, 'Westen': 166, 'Welt': 167, 'Welt': 168, 'Während ~': 169, 'Klang': 170, 'EIN': 171, 'Mich': 172, 'De': 173, 'ich': 174, ',': 175, 'Sammlung': 176, 'Freund': 177, 'Tatsu': 178, 'Grundstufe': 179, 'Feind': 180, 'Reise': 181, 'Stehen': 182, '_': 183}

Irgendwie ist der Speicherplatz in voller Breite als '\ u3000' registriert, aber ich werde ihn vorerst ignorieren.

Netzwerkkonfiguration

Dies ist der Quellcode der von PyTorch implementierten Netzwerkklasse.

import torth.nn as nn
class LSTM_net(nn.Module):
    def __init__(self, corpus_max):
        super(LSTM_net, self).__init__()
        self.embed = nn.Embedding(corpus_max, int(corpus_max/3))
        self.lstm = nn.LSTM(input_size=int(corpus_max/3), hidden_size=int(corpus_max/6), batch_first=True)
        self.out = nn.Linear(int(corpus_max/6), corpus_max)
        self.hidden_cell = None

    def init_hidden_cell(self):
        self.hidden_cell = None

    def repackage_hidden(self, hidden_cell):
        self.hidden_cell = (hidden_cell[0].detach(), hidden_cell[1].detach())

    def forward(self, x, t_bptt=False):
        h = self.embed(x)
        all_time_hidden, hidden_cell = self.lstm(h, self.hidden_cell)
        if t_bptt:
            self.repackage_hidden(hidden_cell)
        out = self.out(all_time_hidden[:, -1, :])
       
        return out

Auf diese Weise ist der Schreibstil wie bei Chainer. Ein wenig.

Einbettungsschicht

Wenn mein Verständnis korrekt ist, scheint die Einbettungsschicht eine Operation zum Extrahieren der Gewichtungsparameterzeile zu sein, die der ID entspricht. Daher ist es nicht erforderlich, die ID in einen One-Hot-Ausdruck zu konvertieren und bei der Eingabe in die vollständig verbundene Schicht eine Gewichtsmultiplikation durchzuführen, sodass der Rechenaufwand erheblich reduziert wird. .. ..

Die Einbettungsebene in PyTorch ist

import torth.nn as nn
nn.Embedding(Gesamtzahl der IDs, Anzahl der Gewichtsabmessungen beim Herausnehmen)

Es kann mit implementiert werden. (vielleicht)

Über PyTorchs LSTM

Laut hier ist der Eingangstensor in PyTorchs LSTM dreidimensional. Es scheint "(Länge der Eingabezeitreihen, Stapelgröße, Vektorgröße)" zu sein. Durch Setzen von batch_first = True beim Erstellen einer Instanz hier Es wird "(Stapelgröße, Länge der einzugebenden Zeitreihen, Vektorgröße)". Dann werden als Rückgabewert alle Ausgabewerte zurückgegeben, die aus der Länge der Eingabezeitreihe und dem Tupel des Ausgabewerts bezogen auf das letzte Mal erhalten wurden.

Ich kann es nicht gut in Worten sagen, aber es sieht aus wie in der Abbildung unten.

foward_rnn.png

Daher sind "all_time_hidden [:, -1 ,:]" und "hidden_cell" im Programm praktisch identisch.

Truncated BPTT Bei der RNN-Fehlerrückausbreitung wird die Rückausbreitung wie bei einem normalen neuronalen Netzwerk durchgeführt, indem dem Berechnungsdiagramm gefolgt wird, wenn es in horizontaler Richtung auf der Zeitachse erweitert wird.

Dies wird als Back Propagation Through Time (BPTT) bezeichnet. (Abbildung unten) rnn.png

Aber hier gibt es ein Problem. Das heißt, die Ebene wird proportional zur Länge der Zeitreihe tiefer. Im Allgemeinen verschwindet beim tiefen Lernen der Gradient umso mehr, je tiefer die Schicht ist, und der Gradient explodiert, und auch die Rechenressourcen nehmen zu.

Wenn Sie mit langen Zeitreihendaten arbeiten, kürzen Sie daher die Backpropagation-Verbindung auf eine geeignete Länge (kürzen). Die Idee ist abgeschnittenes BPTT. (Abbildung unten) truncate.png Hierbei ist zu beachten, dass die Vorwärtsausbreitungsverbindung erhalten bleibt. Das heißt, wenn die Verbindung zwischen dem Zeitpunkt t und t + 1 unterbrochen wird, wird die Ausgabe ausgegeben, die zum Zeitpunkt t während der Vorwärtsausbreitung erhalten wird. Muss zum Zeitpunkt t + 1 als Eingabewert beibehalten werden.

Der Quellcode entspricht den folgenden Teilen.

    def repackage_hidden(self, hidden_cell):
        self.hidden_cell = (hidden_cell[0].detach(), hidden_cell[1].detach())

Der erhaltene Ausgabewert wird als neuer Tensor neu erstellt, und der Berechnungsgraph wird vorübergehend abgeschnitten, wenn diese Funktion aufgerufen wird. .detatch () entspricht der Rolle, nur auf den Wert wie .data in Chainer (wahrscheinlich) zu verweisen.

Da LSTM zwei Ausgänge hat, versteckt und Zelle, wird es mit einem Taple mit jeweils als Element erstellt.

Lernen

Vorerst werde ich den Quellcodeteil veröffentlichen, der der Lernteil sein wird.

class Util():
    def make_batch(self, corpus, seq_len, batchsize=5):
        train_data = []
        label_data = []
        for i in range(batchsize):
            start = random.randint(0, len(corpus)-seq_len-1)
            train_batch = corpus[start:start+seq_len]
            label_batch = corpus[start+1:start+seq_len+1]

            train_data.append(train_batch)
            label_data.append(label_batch)

        train_data = np.array(train_data)
        label_data = np.array(label_data)
        return train_data, label_data

class Loss_function(nn.Module):
    def __init__(self):
        super(Loss_function, self).__init__()
        self.softmax_cross_entropy = nn.CrossEntropyLoss()
        self.mean_squared_error = nn.MSELoss()
        self.softmax = nn.Softmax()

def main():
    model = LSTM_net(corpus_max=corpus.max()+1)
    opt = optim.Adam(model.parameters())
    loss_function = Loss_function()
    util = Util()
    
    epoch = 0
    max_seq_len = 16 #Geben Sie die Länge der Zeichen an, die durch Rückübertragung geschnitten werden sollen
    batch_size = 32

    while True:
        seq_len = 256 #Länge zum Ausschneiden durch Lernen
        train_data, label_data = util.make_batch(corpus, seq_len, batch_size)
        train_data = torch.tensor(train_data, dtype=torch.int64)
        label_data = torch.tensor(label_data, dtype=torch.int64)
        
        loss_epoch = 0    
        count = 0
        for t in range(0, seq_len, max_seq_len):
            train_seq_batch = train_data[:, t:t+max_seq_len]
            label_seq_batch = label_data[:, t:t+max_seq_len]
            out = model(x=train_seq_batch, t_bptt=True)
            loss = loss_function.softmax_cross_entropy(out, label_seq_batch[:, -1])
            opt.zero_grad()
            loss.backward()
            opt.step()    
            loss_epoch += loss.data.numpy()
            count += 1
        loss_epoch /= count
        epoch += 1
        sys.stdout.write( "\r|| epoch : " + str(epoch) + " || loss : " + str(loss_epoch) + " ||")
        
        model.init_hidden_cell()

Politik

Ich möchte lernen, das nächste Zeichen aus der Eingabe einer Zeichenfolge beliebiger Länge vorherzusagen. Dieses Mal werde ich eine geeignete Position aus den Textdaten festlegen, 256 Zeichen daraus extrahieren und eine abgeschnittene BPTT mit einer Länge von 16 durchführen.

Die Weiterleitung wird beibehalten, bis "model.init_hidden_cell ()" im Quellcode aufgerufen wird. Die Rückausbreitung erfolgt nacheinander innerhalb eines Blocks der Länge 16.

Der Weg, um Verlust zu nehmen, besteht darin, dass die Ausgabe für die letzte Eingabe das nächste Zeichen ist (One-Hot-Darstellung der ID in). Die Softmax-Kreuzentropie wird so genommen, dass sie wird.

Übrigens macht es keinen Sinn, dass Loss_function eine Klasse ist (Entschuldigung).

Ergebnis

Der Quellcode zum Generieren der Texte sieht vorerst so aus.

            index = random.randint(0, corpus.max()-1)
            gen_sentence = [index]
            print(convert.id2char[index], end="")
            for c in range(700):
                now_input = np.array(gen_sentence)
                now_input = torch.tensor(now_input[np.newaxis], dtype=torch.int64)
                out = F.softmax(model(now_input, t_bptt=True), dim=1).data.numpy()[0]
                next_index = int(np.random.choice(len(out), size=1, p=out)[0]) #Stichproben
                #next_index = int(out.argmax()) #Maximale Wahrscheinlichkeit der Stichprobe
                print(convert.id2char[next_index], end="")
                if((c+2)%100==0):
                    print("")
                gen_sentence = [next_index]

Geben Sie dem trainierten "model ()" zunächst die ID einer geeigneten Zeichenliste. Geben Sie die Ausgabe ein, die das nächste Zeichen aus diesem einen Zeichen vorhergesagt hat, und sagen Sie das nächste Zeichen voraus. .. .. Die Texte werden durch 700-maliges Wiederholen der obigen Texte erzeugt. Zu diesem Zeitpunkt kann die Ausgabe von "model ()" als Wahrscheinlichkeit für jede ID ausgedrückt werden, sodass die ID mit der höchsten Wahrscheinlichkeit als nächstes Zeichen verwendet werden kann, aber ich dachte, es würde mehr Spaß machen, Zufälligkeit zu haben, also aus der Wahrscheinlichkeitsverteilung Die Zeichen-ID wird in Form einer Abtastung ermittelt.

Verlustdiagramm

loss.png Lass uns so viel runter gehen, wie wir fühlen. Das ist ein unangenehmes Gefühl.

Generierte Texte

Unten sind die generierten Texte

Yuu te Nishi Yuu? I Buri h herumlaufen! Einer der Finger ist t oder dies ist keine Fortsetzung o Es gibt keine Wartezeiten über zehn Tedenrima ♡ Nikala Large Size Epetite y Takaashi Royaeru Sora Futer Ehemann e Ya Para h ist da! Ritsu ♡ Tomo Kimi lol La e ぉ Kujii Guru Tag! Het Li t I Standing Utsubakoru Puyatsu h I Utta Supate Line W Oc me Nora de c Soka Heldenhand Yes et Ra Sprechender Freund I (Kekun Blasphemie eo Tag 1 c tekoyaen west ipu so te te te te te te te te te te te te te t Tatsukamu Koro o Pa h Yuken La La La La, Papu h no Pusa! Ta t Higashi Chii u Sosashi no Ryo Warten auf W Hartnäckig I) Heri lebt, um gut zu sein Ich bin Yohasu! E Makakari) ・ Wow, ich habe meine Hände satt und meine Finger sind in meinen Händen. Ba-kun ist derjenige, der ich bin! Chika (Teda no Miru Ba o Chi W Dekoration t Hibiki to ni e Viel Glück, Student und Kind! Laig! Es ist zehn Jahre alt, aber es ist eine Lara, und es ist eine Linie, es ist ein Auge. Es tut mir leid, es tut mir leid, es tut mir leid, es tut mir leid, es tut mir leid, es tut mir leid, es tut mir leid, es tut mir leid To-Kun Ro-Ta-Ra-Kun zu Guive (Nen! Ja, auch wenn Sie ein Gesicht haben

Eh, du bist auch ein Feind und du bist fasziniert von der Tür (Tor) Moto) Du kannst sie auch dekorieren und du kannst lachen. Weil es 10 Personen und 10 Farben sind, wenn Sie sanft Ihre Finger auf den Dämmerungshimmel legen, der von einander fasziniert ist, schön, Sie kennenzulernen! Ich möchte mehr wissen! Willkommen im Japali Park! Hey, jeder kann frei zum Leben erweckt werden. Du bist auch eine Dekoration. Es ist ein unzusammenhängendes Stück. Monishi, ich bin ein Serval von Dobarcat! Ich werde mein Bestes geben! Ich werde es Arai-san überlassen! Jeder wird gehen. Nun, ich bin schon steil (Schön, Sie kennenzulernen, wenn ich mich versammle, ich möchte mehr über Sie erfahren! Gao! Fahren Sie hier fort, willkommen im Japari Park! Vielen Dank von heute, seien Sie immer nett zu mir Lächeln Die offene Tür (Tor), die auf dich gewartet hat Wenn du viele Träume redest, wird es für immer weitergehen Große Reise Komukai! Haji Selbstfinger Soja bellt Wooney Hier ist der Japari Park Wann ist es? Lalala Gather und Lupar! Ab heute freue ich mich auf dich, aber immer ein sanftes Lächeln. Die offene Tür, die auf dich wartete (Wenn du viel über Gate Yumeko sprichst) Mach hier e So de großes Abenteuer (Ich bin Chinrama-Kun, ich bin Serval, Arai, wer ist in der Dämmerung?

Wow! Mitoroki Masu Geh zum Rock, wie ist es echt? Oh, heul, heul in den Japari Park! Lalalala Color lc Willkommen im Japari Park -! Es ist gut, sich umzudrehen - ich werde mein Bestes geben - ich überlasse es Arai-san! Jeder wird gehen Ich werde mein Bestes geben, wenn ich nicht höher ziele, werde ich rocken, ist es echt? Oh Higashi Heulen im Westen Heulen im Westen Resonanz auf der ganzen Welt Safari-Melodie Willkommen im Japari Park Willkommen im Japari Park Willkommen im Japari Park Schön, Sie ab heute zu treffen Immer ein sanftes Lächeln Die offene Tür (Tor), die immer auf Sie wartete Hier und da, Soko Niso Japari Park! Auch heute wurde Dottan Battans Aufregung angehäuft und das Tor von Ihnen geöffnet.) La Howling im Westen Resonanz auf der ganzen Welt Safari-Melodie Willkommen im Welcome Japari Park! Willkommen im Welcome Japari Park! Ab heute Schön dich kennenzulernen, immer ein sanftes Lächeln Die offene Tür (Tor), die auf dich wartete Wenn du viele Träume redest, wird es für immer weitergehen Große Reise Dies ist Japari Park Ich bin ein Serval einer Servalkatze! Ich werde mein Bestes geben, ich werde es Arai-san überlassen! Jeder wird gehen, ich werde mein Bestes geben, wenn ich nicht höher ziele, ich werde rocken, ist es echt? Oh, heul nach Osten, heul nach Westen Resonanz auf der ganzen Welt Safari Melody Willkommen im Japari Park!

Wenn Sie sich umdrehen, werden Sie hier und da Probleme haben. Es ist ein Durcheinander. Es ist ein Durcheinander. Es ist eine große Sache. Jeder scheint frei zu leben. Sie müssen es nicht dekorieren. Schön, sich zu treffen. you Japari Park! Schön, Sie von heute an zu treffen. Immer ein sanftes Lächeln. Die offene Tür (Tor), die immer auf Sie wartete. Große Reise, die für immer andauern wird, wenn Sie viele Träume sprechen. Dies ist Japari Park. Ich bin ein Serval einer Servalkatze Ich werde mein Bestes geben, ich werde es Arai-san überlassen! Jeder wird gehen, ich werde mein Bestes geben, wenn ich nicht höher ziele, ich werde rocken, wie, heulen im Osten, im Westen Heulen, Echo auf der ganzen Welt Safari-Melodie Willkommen bei Willkommen im Japari Park! Noch heute besteht Dottanbattans Aufregung aus zehn Personen und zehn Farben. Wenn Sie also Ihre Finger sanft auf den faszinierenden Dämmerungshimmel legen, möchte ich mehr über Sie erfahren! Wenn Sie sich umdrehen, werden Sie hier und da Probleme haben. Es ist ein Durcheinander, es ist ein Durcheinander, es ist ein Durcheinander, es ist eine große Sache, jeder lebt frei. Sie müssen es auch nicht dekorieren. Japari Park! Schön, Sie von heute an zu treffen. Immer ein sanftes Lächeln. Die offene Tür (Tor), die auf Sie wartete. Wenn Sie viele Träume sprechen, wird es für immer weitergehen. Große Reise Dies ist Japari Park Ich bin ein Serval einer Servalkatze! Ich werde mein Bestes geben! Ich werde es Arai-san überlassen! Jeder wird gehen. Ich werde mein Bestes geben, wenn ich nicht höher ziele.

Wow, Überlernen, Spaß (wahres Gesicht)

Schließlich

Diesmal habe ich zum ersten Mal einen Artikel veröffentlicht, daher gab es viele Teile, die schlecht oder schwer zu verstehen waren. Ich habe jedoch nicht die Motivation, es neu zu schreiben, also poste es so wie es ist. Ich werde von Freiwilligen durcheinander gebracht.

Wir freuen uns auf Ihre Ratschläge und Vorschläge für Fehler.

kibounoasa

Bonus

Dies ist das Ergebnis der automatischen Generierung der Texte verschiedener Songs in einem Datensatz. Was für ein Lied ist drin?

Weil es so faszinierend ist, wenn Sie Ihre Finger sanft auf den Dämmerungshimmel legen, möchte ich Sie besser kennenlernen! Gao! Wenn Sie sich umdrehen, werden Sie hier und da Probleme haben. Es ist ein Chaos. Es scheint, dass jeder frei lebt. Sie müssen es auch nicht dekorieren. Schön, Sie kennenzulernen. Japari Park! Lalalala Oh, Willkommen im Japali Park! Lalalala Lalala Lala Willkommen im Japali Park! Es scheint, dass jeder frei lebt. Sie müssen es auch nicht dekorieren. Schön, Sie kennenzulernen. Japari Park! Schön, Sie von heute an zu treffen. Immer ein sanftes Lächeln. Eröffnung, die immer auf Sie wartete Gate: Wenn du viel über deine Träume sprichst, wird es für immer weitergehen. Große Reise Oh Heul nach Osten Heul nach Westen Nachhall auf der ganzen Welt Willkommen im Japari Park! Willkommen im Japari Park! Willkommen im Japari Park! Der heutige Dottan, Fuss! Gao! Takaba Enki ist hi y? Gorogoro Däne Waku Waku Uzuru Slapstick Noronoro Ah? Urouro Ateku Teku Kosokoso Rauheit Sunsun Oh? Peropero Ups Mogumogu Kirakira Guine Pika Pika Picone Mofumofu Nadade Niko! Flauschig, flauschig, flauschig, du rufst deinen Namen, flauschig, flauschig, du lachst, Gott, der dich zum Lächeln bringt, danke, ich bin froh, dass ich dich sogar mit einem Schicksal getroffen habe Du siehst, mein Herz entwickelt sich immer mehr, das ist nicht richtig, ich schaue mich immer noch an, ich weiß, dass meine Existenz in dir nicht so groß ist wie du in mir, aber jetzt In diesem Moment, wenn Sie das Gefühl haben, dass Sie teilen, Yamato Nadeshiko! Kurz gesagt? Staub und Nadoko Yamato! Wenn du zu dir aufschaust, ist es zu hell und zu hell. Ich denke an dich. Gott, der nur deswegen schmilzt. Danke. Zu sehen, dass ich dich sogar mit dem Unheil des Schicksals getroffen habe. Pupper Paddon Ups Tan Don Dodo? Dodin Don Dodo ?! Dopapa Donnu! Tu es nicht nicht? Dodin Don Dodo ?! Dopad Don Doun Shakin Dentans Gorogorotan Dojan! Aha, ein Licht (Ja) scheint, wählt ein Wort und selbst wenn es schwierig ist, sich zu drehen, selbst wenn ich einsam bin, geht die Geschichte weiter, weil ich durch das Band der Sterne verbunden bin. Wenn ich auf die Chance warte, an Gott zu sterben, wenn ich Chiaki einen Tag nachjage, die Ära von Touensai Die Herzen von Menschen, die sich ständig verändern, sind kompliziert und mysteriös, aber sagen Sie das wirklich? Sie müssen nach einer ausgewachsenen Wunde rufen, und die Nachtstadt Kimi beginnt mit einem Signal zu tanzen. Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten Zeiten! Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten, Zeiten Heute Abend ist Yuzuki Hana Hoi! Wenn Sie Chiaki in der Ära des Ost-West-Laufens nachjagen, sind die Herzen der Menschen, die sich ständig verändern, kompliziert, aber sagen Sie das wirklich, auch wenn es eine mysteriöse Sache ist? Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Re Zeiten Der Tanz, den das Fest vorgestern, gestern, heute, morgen und übermorgen mit gestörten Haaren fortsetzt. Welcher Tag ist heute Abend? Mittwoch, Donnerstag, Freitag, Samstag, Sonntag, Montag und Dienstag? Ha ha ha ha ha ha ha ha ha ha ha ha ha ha! Ich werde es tun. Wenn ich es in mehr Worte fasse, dachte ich, ich sollte die Worte löschen, wenn es eine Beziehung ist, die verschwindet. Ich hatte Angst, aber das? Etwas ist anders, es ist hart wie ein Stein von der Spitze des Schwertes. Nein, ich möchte ohne "" sterben! Fluffy fluffy Du rufst deinen Namen Fluffy fluffy Du lachst Nur weil du lachst Gott, der dich zum Lächeln bringt Danke Koisurukisetsuha Yokubari fluffy fluffy Du bist glücklich Rufen Sie einfach den Namen, es schwebt in der Luft, es ist flauschig, Sie lachen, es bringt Sie zum Lächeln, Gott sei Dank, ich bin froh, dass ich Sie sogar mit einem Unheil des Schicksals getroffen habe. Korrekt. Dodin Don Dodo ?! Doha

Recommended Posts

Ich möchte PyTorch verwenden, um so etwas wie den Text von Japari Park zu generieren
Ich möchte nur die SudachiPy-Normalisierungsverarbeitung verwenden
Ich möchte meine Gefühle mit den Texten von Mr. Children ausdrücken
Ich möchte den Erfolg von NBA-Spielern mit dem Qore SDK vorhersagen
Ich möchte das Erscheinungsbild von zabbix anpassen
Ich möchte die Aktivierungsfunktion Mish verwenden
Ich habe versucht, die Texte von Hinatazaka 46 zu vektorisieren!
Ich möchte Python in der Umgebung von pyenv + pipenv unter Windows 10 verwenden
Ich möchte das Ausführungsergebnis von strace erfassen
Ich möchte die Grundlagen von Bokeh vollständig verstehen
Ich möchte R-Datensatz mit Python verwenden
Ich möchte die Sicherheit der SSH-Verbindung erhöhen
Ich habe versucht, mit dem Seq2Seq-Modell von TensorFlow so etwas wie einen Chatbot zu erstellen
Ich möchte auch Linux-Befehle an der Eingabeaufforderung verwenden! Verwenden Sie Linux-Befehle an der Eingabeaufforderung anstelle von Git Bash
Ich möchte das neueste gcc verwenden, auch wenn ich keine Sudo-Berechtigungen habe! !!
Ich möchte so etwas wie Uniq in Python sortieren
Ich möchte Betriebsinformationen über die Yahoo-Route erhalten
[Python] Ich möchte die Option -h mit argparse verwenden
Ich möchte die Authentizität eines Elements eines numpy-Arrays bestimmen
Ich möchte die Natur von Python und Pip kennenlernen
[Einführung in Pytorch] Ich möchte Sätze in Nachrichtenartikeln generieren
Keras Ich möchte die Ausgabe einer beliebigen Ebene erhalten !!
Ich möchte die Legende der IT-Technologiewelt kennenlernen
Ich möchte den Namen der ausgeführten Funktion / Methode erhalten
Ich möchte Shortcut-Übersetzungen wie die DeepL-App auch unter Linux verwenden
Ich möchte die HTML-Version der OpenCV 3.1-Version "OpenCV-Python Tutorials" lesen
Ich möchte den Anfang des nächsten Monats mit Python ausgeben
Vergleich von GCP-Computerdiensten [Ich möchte es serverlos verwenden]
Ich möchte sowohl den Schlüssel als auch den Wert des Python-Iterators verwenden
Ich möchte die Position meines Gesichts mit OpenCV überprüfen!
Ich möchte die Bevölkerung jedes Landes der Welt kennenlernen.
Ich möchte es nicht zugeben ... Die dynamische Systemdarstellung von Neural Network
[C-Sprache] Ich möchte Zufallszahlen im angegebenen Bereich generieren
Ich möchte ein Glas aus Python verwenden
Ich möchte Linux auf dem Mac verwenden
Ich möchte die legendäre Nintendo-Kombination wiederbeleben, indem ich AI und HR Tech voll ausnütze!
Ich möchte das Ergebnis von "Zeichenfolge" .split () in Python stapelweise konvertieren
Ich möchte die abstrakte Klasse (ABCmeta) von Python im Detail erklären
Ich möchte eine Liste in der Reihenfolge anderer Listen sortieren
Ich möchte die Django Debug Toolbar in Ajax-Anwendungen verwenden
Ich möchte komplizierte vier Regeln in der IF-Anweisung der Django-Vorlage verwenden! → Verwenden Sie eine benutzerdefinierte Vorlage
Ich möchte IPython Qt Console verwenden
Ich möchte den Fortschrittsbalken anzeigen
Ich möchte die Gefühle von Menschen analysieren, die sich treffen und zittern wollen
Grundlagen von PyTorch (1) - Verwendung von Tensor-
Ich möchte einen beliebigen Befehl im Befehlsverlauf von Shell belassen
Ich möchte das automatische Löschen des tmp-Bereichs in RHEL7 stoppen
Zur Zeit möchte ich mit FastAPI zeigen, wie man eine solche API in swagger verwendet
Python: Ich möchte die Verarbeitungszeit einer Funktion genau messen
Ich möchte mit dem Reim part2 umgehen
Ich möchte mit dem Reim part5 umgehen
Ich möchte mit dem Reim part4 umgehen
Ich möchte den Pfad des Verzeichnisses abrufen, in dem die laufende Datei gespeichert ist.
Ich möchte den Transferstatus der 2020 J League visualisieren. Was soll ich tun?
Ich möchte einen Lebenszyklus in der Aufgabendefinition von ECS festlegen
Ich möchte dem Anfang einer WAV-Datei 1 Sekunde lang Stille hinzufügen
Ich möchte eine Liste der WebDAV-Dateien im Modul Anfragen anzeigen
Ich möchte das Bild entlang der Kontur anstelle des Rechtecks zuschneiden [Python OpenCV]
Ich möchte die Ergebnisse von% time, %% time usw. in einem Objekt (Variable) speichern.