我正在尝试使用Google Colab中的IMDb数据集实现二进制分类示例。我以前实现过这个模型。但当我几天后再次尝试执行此操作时,它返回了一个值错误:“当load_data()函数的allow_pickle=False时,无法加载对象数组。”。
我已经尝试过解决这个问题,引用了一个类似问题的现有答案:How to fix 'Object arrays cannot be loaded when allow_pickle=False' in the sketch_rnn algorithm 但事实证明,仅仅添加allow_pickle参数是不够的。
我的代码:
from keras.datasets import imdb
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)
错误:
ValueError Traceback (most recent call last)
<ipython-input-1-2ab3902db485> in <module>()
1 from keras.datasets import imdb
----> 2 (train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)
2 frames
/usr/local/lib/python3.6/dist-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
/usr/local/lib/python3.6/dist-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)
/usr/local/lib/python3.6/dist-packages/numpy/lib/format.py in read_array(fp, allow_pickle, pickle_kwargs)
690 # The array contained Python objects. We need to unpickle the data.
691 if not allow_pickle:
--> 692 raise ValueError("Object arrays cannot be loaded when "
693 "allow_pickle=False")
694 if pickle_kwargs is None:
ValueError: Object arrays cannot be loaded when allow_pickle=False
这个问题仍在keras git的讨论中。我希望能尽快解决。 在那之前,试着把你的numpy版本降到1.16.2。它似乎解决了这个问题。
此版本的numpy的默认值为
allow_pickle
,即True
。这里有一个技巧,可以强制
imdb.load_data
允许pickle在笔记本中替换这一行:据此:
继GitHub上的issue之后,官方解决方案是编辑imdb.py文件。这个修复对我来说很好,不需要降级numpy。在
tensorflow/python/keras/datasets/imdb.py
找到imdb.py文件(我的完整路径是:C:\Anaconda\Lib\site-packages\tensorflow\python\keras\datasets\imdb.py
-其他安装将不同),并根据差异更改第85行:更改的原因是安全性,以防止在pickled文件中插入与SQL等价的Python。上述更改只会影响imdb数据,因此您可以在其他地方保留安全性(不降低numpy的级别)。
相关问题 更多 >
编程相关推荐