[PYTHON] Pourquoi vous devez spécifier dtype lors de l'utilisation de keras pad_sequences

Qu'est-ce que keras pad_sequences?

Lorsque les longueurs de chaque vecteur ne sont pas les mêmes, c'est une méthode pour leur donner la même longueur en ajoutant 0 ou en coupant.

Par exemple ...

>>> 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]])]
>>> #Alignez la longueur sur 4.
>>> 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)

Pourquoi vous devez spécifier dtype

Si vous ne spécifiez pas dtype, la valeur de int32 est renvoyée par défaut.

Ensuite, ** si les données d'origine ont une virgule flottante, elles seront converties de force en int32 **.

Par exemple, 0,1 devient 0.

↓ Lorsque dtype n'est pas spécifié

>>> from keras.preprocessing import sequence
>>> import numpy as np
>>> #données mélangées avec 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]])]
>>> #Alignez la longueur sur 4.
>>> data = sequence.pad_sequences(data, maxlen=4,padding="post", truncating="post")
>>> #La valeur qui était float est automatiquement convertie en int32 et devient 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)

Conclusion

Spécifiez dtype lors de l'utilisation de pad_sequences.

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

Recommended Posts

Pourquoi vous devez spécifier dtype lors de l'utilisation de keras pad_sequences
Jour 67 [Introduction à Kaggle] Avez-vous essayé d'utiliser Random Forest?
Lorsque vous souhaitez envoyer un objet avec des requêtes à l'aide de flask
Lorsque vous souhaitez l'utiliser tel quel lorsque vous l'utilisez avec lambda memo
Essayez d'utiliser n pour rétrograder la version de Node.js que vous avez installée
"Mentez ... Qu'as-tu fait?"