[PYTHON] Lösung für ValueError in Keras imdb.load_data

Ursprung

Ich habe versucht, es mit dem folgenden Code zu lesen.

from keras.datasets import imdb

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

Dann tritt der folgende Fehler auf

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

Ursache

Es scheint, dass die Ursache darin besteht, dass allow_pickle = False beim Upgrade der numpy-Version zum Standard geworden ist.

Lösung

Es kann durch Verringern der Version von numpy behandelt werden, ist jedoch problematisch. Versuchen Sie daher, es im Code zu lösen.

Insbesondere wird es gelöst, indem es durch den folgenden Code ersetzt wird.

#Geben Sie bis zu 10000 Wörter in der Reihenfolge der Häufigkeit an
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

In np.load wird es vorübergehend überschrieben, so dass allow_pickle = True angegeben wird. Wenn imdb.load_data abgeschlossen ist, stellen Sie die Definition von np.load wieder her.

Referenz

Recommended Posts

Lösung für ValueError in Keras imdb.load_data
Lösung für Laufzeitfehler in OpenVINO IEPlugin.load ()
Schreiben Sie DCGAN mit Keras
Hard-Swish mit Keras implementiert
Für Anfänger, wie man mit häufigen Fehlern in Keras umgeht
Implementieren Sie LSTM AutoEncoder mit Keras
Visualisieren Sie das Keras-Modell mit Python 3.5
Suchen Sie nach Zeichenfolgen in Dateien
Techniken zum Sortieren in Python
-Lösung für bereits verwendete Adresse
Über "für _ in range ():" von Python
Tipps zur Implementierung eines etwas schwierigen Modells oder Trainings mit Keras