在 Keras 中加载数据集时如何修复错误?
Posted
技术标签:
【中文标题】在 Keras 中加载数据集时如何修复错误?【英文标题】:How to fix error when load dataset in Keras? 【发布时间】:2019-12-02 05:47:29 【问题描述】:当我加载“reuters”数据集时,我得到一个错误
我尝试使用一些:
np_load_old = np.load
np.load = lambda *a,**k: np_load_old(*a, allow_pickle=True, **k)
(train_data, train_labels), (test_data, test_labels) = reuters.load_data(num_words=10000)
np.load = np_load_old
原来是:
from keras.datasets import reuters
import numpy as np
(train_data, train_labels), (test_data, test_labels) = reuters.load_data(num_words=10000)
TypeError: () 获得了多个关键字参数值 'allow_pickle'
完整的追溯:
TypeError Traceback (most recent call last)
<ipython-input-11-8669b9ae66ea> in <module>()
1 from keras.datasets import reuters
----> 2 (train_data, train_labels), (test_data, test_labels) = reuters.load_data(num_words=10000)
3
4
2 frames
<ipython-input-2-8333ca7e6c7f> in <lambda>(*a, **k)
4
5 np_load_old = np.load
----> 6 np.load = lambda *a,**k: np_load_old(*a, allow_pickle=True, **k)
7 (train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)
> 8 np.load = np_load_old
TypeError: <lambda>() got multiple values for keyword argument 'allow_pickle'
【问题讨论】:
请包括原始和完整的回溯。 你为什么用np.load = lambda *a,**k: np_load_old(*a, allow_pickle=True, **k)
覆盖np.load
?您收到错误是因为 k
包含 allow_pickle
,它现在是 allow_pickle=True
的副本。
感谢 ForceBru!我已被删除 (**k) 并且有效!
【参考方案1】:
所以我花了一段时间才弄明白,但我终于解决了。
因为我们的问题是np.load
的默认值,所以我们只需要更改它们(至少暂时)。
所以在使用 numpy 之前,您可以简单地将这一行添加到您的代码中:
np.load.__defaults__=(None, True, True, 'ASCII')
这会将allow_pickle
更改为True
。
然后当你完成你正在做的事情时修复它
np.load.__defaults__=(None, False, True, 'ASCII')
干杯!
【讨论】:
【参考方案2】:Refer this solution。这对我有用。
我通过删除old()
中的**k
解决了这个问题。这是因为**k
包含allow_pickle
。所以我的命令行从此改变:
np.load = lambda *a,**k: old(*a,allow_pickle=True,**k)
到这里:
np.load = lambda *a,**k: old(*a,allow_pickle=True)
如果您在执行更正的命令行之前已在old()
中运行了带有**k
的命令,请记住重新启动运行时。
【讨论】:
以上是关于在 Keras 中加载数据集时如何修复错误?的主要内容,如果未能解决你的问题,请参考以下文章
如何防止 Azure ML Studio 在导入数据集时将特征列转换为 DateTime
尝试在 Keras 中加载顺序模型时出现“KeyError:0”