Ki programmieren für Anfänger?
Hallo
Ich habe noch nie eine KI programmiert und wollte es deshalb wollte ich mal mit Tensorflow es ausprobieren. Bei mir hat es funktioniert nur wenn ich mein Netz trainiere wird bei mir "loss: nan" angezeigt.
Mein Code:
import tensorflow as tf #Für neuronale netze
from tensorflow import keras #Für daten und andere dinge
model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])]) #Hier definieren wir das model
model.compile(optimizer='sgd', loss='mean_squared_error') # Compilieren wir das Model
#Daten generieren
xs = list()
for x in range(0, 1000):
xs.append(x)
ys = list()
for x in range(0, 1000):
ys.append( xs[x] ** (1 / 2) ) #Für jedes Elemnt die quadratwurzel berechnen
#Netz trainieren
model.fit(xs, ys, epochs=1000)
#Ki Konsole
print("Hallo frage bei mir die quadrat wurzel ab")
print("Tippe exit zum beenden")
while True:
inp = input("$ ")
if inp == "exit": break
else:
print(model.predict([float(inp)])
Wenn ich es trainiere und abfrage:
Wisst ihr wiré ich das beheben kann? Also das bei "loss:" der Wert angezeigt wird und wen ich abfrage auch kein "loss:" angezeigt bekomme sondern den passenden wert.?
TheCPP
1 Antwort
Ich habe es lokal ausprobiert: es liegt an deinem Wertebereich der x- und y-Werte.
Wenn du range(0,10) nimmst, kommen richtige Loss-Werte heraus.
Am besten ist es, x- und y-Werte zu normalisieren, z.B. [-1, 1].
Was meinst du mit "Daten >1000"? Werte > 1000, oder mehr als 1000 Datenpunkte? Wenn ersteres, dann schau dir wie gesagt Normalisierung an. D.h., du musst deine Werte vor dem Training normalisieren, und dann deine Prediction wieder in den ursprünglichen Wertebereich umwandeln.
Dank, es funktioniert super. Weißt du wie ich ein Netz mit viele Daten >1000 trainiere das trotzdem die passende loss-wert ausgibt?