Wie ändere ich den dtype in TensorFlow für eine CSV-Datei?

8

Hier ist der Code, den ich ausführen möchte -

%Vor%

Dieser Code gibt den Fehler unten zurück.

%Vor%

Es hat eine Menge Informationen, die ihm folgen, was für das Problem irrelevant ist. Offensichtlich ist das Problem, dass viele der Daten, die ich dem Programm füttere, nicht vom dtype int32 sind. Es sind meistens Gleitkommazahlen. Ich habe ein paar Dinge ausprobiert, um den dtype so zu ändern, als setze ich explizit das dtype=float Argument in tf.decode_csv sowie tf.concat . Keine funktionierte. Es ist ein ungültiges Argument. Um das Ganze abzurunden, weiß ich nicht, ob dieser Code tatsächlich eine Vorhersage über die Daten machen wird. Ich will es vorhersagen, ob Col1 wird eine 1 oder 0 und ich sehe nichts im Code, die darauf hindeuten würde, dass es diese Vorhersage tatsächlich machen wird. Vielleicht werde ich diese Frage für einen anderen Thread speichern. Jede Hilfe wird sehr geschätzt!

    
NickTheInventor 19.11.2015, 15:45
quelle

2 Antworten

1

Die Antwort zum Ändern des dtype besteht darin, einfach die Standardeinstellungen wie folgt zu ändern -

%Vor%

Wenn Sie danach col1 ausdrucken, erhalten Sie diese Nachricht.

%Vor%

Aber es gibt einen weiteren Fehler, auf den Sie stoßen werden: wurde hier beantwortet. Um die Antwort zu wiederholen, besteht die Problemumgehung darin, tf.concat in tf.pack wie folgt zu ändern.

%Vor%     
NickTheInventor 19.11.2015, 17:02
quelle
13

Die Schnittstelle zu tf.decode_csv() ist etwas knifflig. Der dtype jeder Spalte wird durch das entsprechende Element des record_defaults -Arguments bestimmt. Der Wert für record_defaults in Ihrem Code wird interpretiert, da jede Spalte tf.int32 als Typ hat, was zu einem Fehler führt, wenn Floating-Point-Daten gefunden werden.

Nehmen wir an, Sie haben die folgenden CSV-Daten, die drei ganzzahlige Spalten enthalten, gefolgt von einer Gleitkomma-Spalte:

%Vor%

Angenommen, alle Spalten sind erforderlich , würden Sie record_defaults wie folgt erstellen:

%Vor%

Ein leerer Wert in record_defaults bedeutet, dass der Wert erforderlich ist. Wenn (z. B.) Spalte 2 fehlende Werte haben darf, definieren Sie record_defaults wie folgt:

%Vor%

Der zweite Teil Ihrer Frage betrifft das Erstellen und Trainieren eines Modells, das den Wert einer der Spalten aus den Eingabedaten vorhersagt. Momentan ist das Programm nicht: es verkettet einfach die Spalten in einen einzelnen Tensor, genannt features . Sie müssen ein Modell definieren und trainieren, das diese Daten interpretiert. Einer der einfachsten Ansätze ist die lineare Regression, und Sie finden dieses Tutorial möglicherweise in lineare Regression in TensorFlow anpassungsfähig an Ihr Problem.

    
mrry 19.11.2015 17:06
quelle

Tags und Links