当前位置: 首页 > 面试题库 >

如何修复imdb.load_data()函数的“ allow_pickle = False时无法加载对象数组”?

田信然
2023-03-14
问题内容

我正在尝试使用 Google Colab中
的IMDb数据集实现二进制分类示例。我之前已经实现了此模型。但是,几天后我再次尝试执行此操作时,它value error: 'Object arrays cannot be loaded when allow_pickle=False'为load_data()函数返回了。

我的代码:

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

问题答案:

这是一个强制imdb.load_data在笔记本中允许泡菜代替此行的技巧:

(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)

这样:

import numpy as np
# save np.load
np_load_old = np.load

# modify the default parameters of np.load
np.load = lambda *a,**k: np_load_old(*a, allow_pickle=True, **k)

# call load_data with allow_pickle implicitly set to true
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)

# restore np.load for future normal usage
np.load = np_load_old


 类似资料:
  • 我正在重建一个网站,其中包含了战斗游戏Tekken7中人物的基本介绍。我已将所有字符及其数据作为对象存储在一个文件中。 然后,我试图导出到另一个文件,该文件包含一个函数,在网页上显示给定的haracter的数据,接受该字符的名称作为其唯一参数。但是,当我在浏览器上检查控制台时,我会得到一个SynTaxError,上面写着“无法在模块之外使用导入语句”。这里有什么问题?

  • 我有一个包含对象数组的数组。以下是一个例子: 我想创建另一个数组,其中包含上述数组的所有对象,如下所示: 我写了下面的代码: 但是当我返回一个包含所有信息的数组时。问题是,此数组包含所需数组的12倍,因为customerContacts长度为12

  • 问题内容: 我有一个使用该函数的对象数组。我正在用数组中的一个对象搜索该数组(对象是相同的)。但是似乎没有匹配项。我已经在这个小提琴中重复了这个问题。代码也在下面。那么检查数组是否包含对象的正确方法是什么? 问题答案: 您不能直接比较对象,但是使用此方法,可以将它们与JSON.stringify比较。

  • 我在项目中使用liquibase,到目前为止它工作得很好。 我添加了一个新的变更集,它在本地工作得很好,一旦部署,容器的状态就会变成下面的语句:“LiquiBase:Waiting for changelog Lock...”。 未设置部署的限制资源。 表“DatabaseChangelogLock”的更新不起作用,因为吊舱一直锁定它。 我该如何解决这个问题?

  • 我用的是Report-router-Redux我有这样的路由 在路由中加载与userId参数对应的用户对象的推荐方法是什么? 我的想法(我是新的反应