Was ich mit maschinellem Lernen versuchen möchte, ist eine KI zu erstellen, die mehrere Antworten gibt. Ich habe es geschafft, es so zu verschieben, also habe ich es als Memorandum veröffentlicht
Software | Ausführung |
---|---|
Google Colaboratory | 2020-10-01 |
def build_model():
inputs = layers.Input(shape=(len(train_dataset.keys()),))
x = layers.Dense(64, activation='relu')(inputs)
a = layers.Dense(64, activation='relu')(x)
output_a = layers.Dense(1, name='bmi')(a)
b = layers.Dense(64, activation='relu')(x)
output_b = layers.Dense(1, name='life_expectancy')(b)
model = keras.Model(inputs=inputs, outputs=[output_a, output_b], name='Health')
model.compile(
optimizer=tf.keras.optimizers.RMSprop(0.001),
loss_weights=[1., 0.8],
loss=['mse', 'mse'],
metrics=['mae', 'mse'])
return model
Plötzlich ist der Code, den ich tatsächlich ausprobiert habe, oben Es scheint, dass "keras.Sequential", das häufig im Beispielcode verwendet wird, nur eine Ausgabe hat. Wenn Sie mehrere Dinge gleichzeitig anfordern möchten, müssen Sie anscheinend das Modell mit der "funktionalen API" definieren Zum Beispiel die Vorhersage der Anzahl von "Retweets" und "Likes" aus dem Inhalt des Tweets.
Es scheint, dass Sie die Ausgabe beliebig erhöhen können, indem Sie das Ausgabeergebnis der Ebene, die hinzugefügt werden soll, in einer Variablen speichern und als Array an das Argument "Ausgaben" von "Keras.Model" übergeben.
Es scheint auch, dass Sie die Auswertungsmethode für jede Ausgabe ändern können, indem Sie die Verlustfunktion im Array für "Verlust" angeben.
height | weight | bmi | sex | birthday | life_expectancy |
---|---|---|---|---|---|
161 | 121 | 47 | female | 1982-02-01 | 40 |
154 | 55 | 23 | female | 2005-08-09 | 72 |
172 | 64 | 22 | male | 1976-09-21 | 37 |
Ich habe fiktive Daten erstellt, die Größe, Gewicht und BMI sowie die Lebenserwartung miteinander verknüpfen Erstellen Sie ein Modell, das den BMI und die Lebenserwartung anhand von Größe, Gewicht, Geschlecht und Geburtsjahr vorhersagt
model.fit(train_data, [train_label_a, train_label_b], epochs=100)
Übergeben Sie beim Training die Daten und Lehrerdaten als Array an "fit" Es scheint, dass, wenn Sie es im Wörterbuchformat übergeben, die Rückmeldung des Fehlers nicht gut geht und Sie nicht lernen können Ein gängiges Bildanalysesystem verarbeitet große Bilddaten gut mit "tf.data.Dataset", dies scheint jedoch auch ein Wörterbuchtyp zu sein, sodass das Training mit mehreren Ausgabemodellen fehlgeschlagen ist. Wenn Sie mit "tf.data.Dataset" übergeben, wird es außerdem mit dem Daten- und Beschriftungssatz übergeben, sodass es noch mehr Schimpansen gibt
Nachtrag: Beim Übergeben von Daten mit tf.data.Dataset konnte ich Feedback geben, indem ich den Schlüssel des Wörterbuchs mit dem Ausgabenamen des Modells abgleichen konnte.
ds = tf.data.Dataset.from_tensor_slices((normed_train_data, {"bmi": train_labels.bmi, "life_expectancy": train_labels.life_expectancy}))
ds = ds.batch(BATCH_SIZE)
model.fit(ds, epochs=100)
Es ist der gesamte Code, den ich beim Schreiben und Verschieben überprüft habe Veröffentlicht am Colaboratory
Problem vorhersagender BMI und Lebenserwartung zurückgeben
Ich habe versucht, über maschinelles Lernen zu schreiben, aber ich bin im Gori-Nebel, ohne es zu wissen. Bitte verzeihen Sie mir, obwohl das Ende des Artikels nur "~ scheint" ist.
Die Genauigkeit des maschinellen Lernens selbst ist unvorstellbar, und wenn die Trainingsdaten keine Verzerrung aufweisen, scheint es, dass selbst eine kleine Datenmenge eine beträchtliche Vorhersagegenauigkeit ergibt. Außergewöhnliche Dinge und Muster, die nicht mit Lerndaten gesegnet sind, ergeben seltsame Zahlenwerte. Wie viel können wir also packen? Ich frage mich, ob es der Unterschied zu Bonjin sein wird. Ich fühlte, dass
Erste Schritte mit Keras mit funktionaler API
Recommended Posts