Solution pour ValueError dans Keras imdb.load_data

Origine

J'ai essayé de le lire avec le code suivant.

from keras.datasets import imdb

(X_train,y_train),(X_test,y_test) = imdb.load_data(num_words=10000)

Ensuite, l'erreur suivante se produit

ValueError                                Traceback (most recent call last)
<ipython-input-203-2fc6b409cd07> in <module>
      5 #np_load_old = np.load
      6 #np.load = lambda *a,**k: np_load_old(*a, allow_pickle=True, **k)
----> 7 (X_train,y_train),(X_test,y_test) = imdb.load_data(num_words=10000)
      8 #np.load = np_load_old
      9 
/opt/anaconda3/lib/python3.7/site-packages/keras/datasets/imdb.py in load_data(path, num_words, skip_top, maxlen, seed, start_char, oov_char, index_from, **kwargs)
     57                     file_hash='599dadb1135973df5b59232a0e9a887c')
     58     with np.load(path) as f:
---> 59         x_train, labels_train = f['x_train'], f['y_train']
     60         x_test, labels_test = f['x_test'], f['y_test']
     61 
/opt/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py in __getitem__(self, key)
    260                 return format.read_array(bytes,
    261                                          allow_pickle=self.allow_pickle,
--> 262                                          pickle_kwargs=self.pickle_kwargs)
    263             else:
    264                 return self.zip.read(key)
/opt/anaconda3/lib/python3.7/site-packages/numpy/lib/format.py in read_array(fp, allow_pickle, pickle_kwargs)
    720         # The array contained Python objects. We need to unpickle the data.
    721         if not allow_pickle:
--> 722             raise ValueError("Object arrays cannot be loaded when "
    723                              "allow_pickle=False")
    724         if pickle_kwargs is None:
ValueError: Object arrays cannot be loaded when allow_pickle=False

Cause

Il semble que la cause soit que ʻallow_pickle = False` soit devenu la valeur par défaut lors de la mise à jour de la version numpy.

Solution

Cela peut être géré en abaissant la version de numpy, mais c'est gênant, alors essayez de le résoudre dans le code.

Plus précisément, il est résolu en le remplaçant par le code suivant.

#Spécifiez jusqu'à 10000 mots par ordre de fréquence
from keras.datasets import imdb
​
np_load_old = np.load
np.load = lambda *a,**k: np_load_old(*a, allow_pickle=True, **k)
(X_train,y_train),(X_test,y_test) = imdb.load_data(num_words=10000)
np.load = np_load_old

Dans np.load, il est temporairement écrasé afin que ʻallow_pickle = True soit spécifié. Lorsque ʻimdb.load_data est terminé, restaurez la définition de np.load.

référence

Recommended Posts

Solution pour ValueError dans Keras imdb.load_data
Solution pour l'erreur d'exécution dans OpenVINO IEPlugin.load ()
Ecrire DCGAN avec Keras
Implémentation hard-swish avec Keras
Pour les débutants, comment gérer les erreurs courantes dans les keras
Implémenter LSTM AutoEncoder avec Keras
Visualiser le modèle Keras avec Python 3.5
Rechercher des chaînes dans les fichiers
Techniques de tri en Python
-Solution pour l'adresse déjà utilisée
À propos de "for _ in range ():" de python
Conseils pour mettre en œuvre un modèle ou un entraînement légèrement difficile avec Keras