[PYTHON] Warum müssen Sie dtype angeben, wenn Sie keras pad_sequences verwenden?

Was ist keras pad_sequences?

Wenn die Längen der einzelnen Vektoren nicht gleich sind, können Sie sie durch Hinzufügen von 0 oder Schneiden auf die gleiche Länge bringen.

Zum Beispiel ...

>>> from keras.preprocessing import sequence
>>> import numpy as np
>>> data = [np.array([[1,2,3],[4,5,6]]),
...         np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15]])]
>>> data
[array([[1, 2, 3],
       [4, 5, 6]]), array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12],
       [13, 14, 15]])]
>>> #Richten Sie die Länge auf 4 aus.
>>> data = sequence.pad_sequences(data, maxlen=4,padding="post", truncating="post")
>>> data
array([[[ 1,  2,  3],
        [ 4,  5,  6],
        [ 0,  0,  0],
        [ 0,  0,  0]],

       [[ 1,  2,  3],
        [ 4,  5,  6],
        [ 7,  8,  9],
        [10, 11, 12]]], dtype=int32)

Warum müssen Sie dtype angeben

Wenn Sie dtype nicht angeben, wird standardmäßig der Wert von int32 zurückgegeben.

Wenn ** die Originaldaten einen Gleitkomma haben, werden sie zwangsweise in int32 ** konvertiert.

Zum Beispiel wird 0,1 zu 0.

↓ Wenn dtype nicht angegeben ist

>>> from keras.preprocessing import sequence
>>> import numpy as np
>>> #Daten gemischt mit float
>>> data = [np.array([[0.1,0.2,0.3],[0.4,0.5,0.6]]),
...         np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12],[13,14,15]])]
>>> data
[array([[0.1, 0.2, 0.3],
       [0.4, 0.5, 0.6]]), array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12],
       [13, 14, 15]])]
>>> #Richten Sie die Länge auf 4 aus.
>>> data = sequence.pad_sequences(data, maxlen=4,padding="post", truncating="post")
>>> #Der Wert, der float war, wird automatisch in int32 umgewandelt und wird zu 0
>>> data
array([[[ 0,  0,  0],
        [ 0,  0,  0],
        [ 0,  0,  0],
        [ 0,  0,  0]],

       [[ 1,  2,  3],
        [ 4,  5,  6],
        [ 7,  8,  9],
        [10, 11, 12]]], dtype=int32)

Fazit

Geben Sie dtype an, wenn Sie pad_sequences verwenden.

sequence.pad_sequences(data, maxlen=4, padding="post", 
truncating="post", dtype=float32)

Recommended Posts

Warum müssen Sie dtype angeben, wenn Sie keras pad_sequences verwenden?
Tag 67 [Einführung in Kaggle] Haben Sie versucht, Random Forest zu verwenden?
Wenn Sie ein Objekt mit Anforderungen mithilfe der Flasche senden möchten
Wenn Sie es so verwenden möchten, wie es ist, wenn Sie es mit Lambda-Memo verwenden
Versuchen Sie, mit n die von Ihnen installierte Version von Node.js herunterzustufen
"Lüge ... Was hast du gemacht?"