Ich versuche, Nueral Network-Gewichtungen in einer Datei zu speichern und dann diese Wertigkeiten wiederherzustellen, indem ich das Netzwerk initialisiere anstelle einer zufälligen Initialisierung. Mein Code funktioniert gut mit zufälliger Initialisierung. Aber, wenn ich Gewichte von der Datei initialisiere, zeigt es mir einen Fehler TypeError: Input 'b' of 'MatMul' Op has type float64 that does not match type float32 of argument 'a'.
Ich weiß nicht, wie ich dieses Problem löse. Hier ist mein Code:
Modellinitialisierung
%Vor%Modellparameter
%Vor% Die tf.matmul()
-Option führt keine automatischen Typkonvertierungen durch Daher müssen beide Eingaben den gleichen Elementtyp haben. Die angezeigte Fehlermeldung weist auf einen Aufruf von tf.matmul()
hin, wobei das erste Argument den Typ tf.float32
und das zweite Argument den Typ tf.float64
hat. Sie müssen eine der Eingaben so konvertieren, dass sie der anderen entspricht, zum Beispiel mit tf.cast(x, tf.float32)
.
Wenn ich Ihren Code betrachte, sehe ich nirgendwo, dass ein tf.float64
Tensor explizit erstellt wird (der Standard dtype
für Fließkommawerte in der TensorFlow Python API - zB für tf.constant(37.0)
-is tf.float32
). Ich würde vermuten, dass die Fehler von den np.loadtxt(filename)
-Aufrufen verursacht werden, die möglicherweise ein np.float64
-Array laden. Sie können sie explizit so ändern, dass np.float32
arrays (die in tf.float32
tensors konvertiert werden) wie folgt geladen werden:
Obwohl es eine alte Frage ist, aber ich würde gerne hinzufügen, dass ich auf dasselbe Problem gestoßen bin. Ich habe es mit dtype=tf.float64
für die Parameterinitialisierung und für die Erstellung von X- und Y-Platzhaltern gelöst.
Hier ist der Snap meines Codes.
%Vor%und
%Vor%Wenn Sie alle plocholders und Parameter mit dem float64-Datentyp deklarieren, wird dieses Problem gelöst.
Tags und Links python neural-network tensorflow machine-learning