Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何修复';当allow_pickle=False';在sketch\n算法中_Python_Machine Learning - Fatal编程技术网

Python 如何修复';当allow_pickle=False';在sketch\n算法中

Python 如何修复';当allow_pickle=False';在sketch\n算法中,python,machine-learning,Python,Machine Learning,我在jupyter笔记本上运行sketch_rnn.ipynb,加载环境以加载经过训练的数据集时,它返回了一个错误“当allow_pickle=False时无法加载对象数组” 这是google开发人员在开发sketch_rnn算法时已经使用的代码,该算法甚至在google colab中运行。过去我自己在谷歌colab上运行过它,但似乎没有在我自己的jupyter笔记本上运行 from magenta.models.sketch_rnn.sketch_rnn_train import * from

我在jupyter笔记本上运行sketch_rnn.ipynb,加载环境以加载经过训练的数据集时,它返回了一个错误“当allow_pickle=False时无法加载对象数组”

这是google开发人员在开发sketch_rnn算法时已经使用的代码,该算法甚至在google colab中运行。过去我自己在谷歌colab上运行过它,但似乎没有在我自己的jupyter笔记本上运行

from magenta.models.sketch_rnn.sketch_rnn_train import *
from magenta.models.sketch_rnn.model import *
from magenta.models.sketch_rnn.utils import *
from magenta.models.sketch_rnn.rnn import * 

model_params.batch_size = 1
eval_model_params = sketch_rnn_model.copy_hparams(model_params)
eval_model_params.use_input_dropout = 0
eval_model_params.use_recurrent_dropout = 0
eval_model_params.use_output_dropout = 0
eval_model_params.is_training = 0
sample_model_params = sketch_rnn_model.copy_hparams(eval_model_params)
sample_model_params.max_seq_len = 1
return [model_params, eval_model_params, sample_model_params]


[train_set, valid_set, test_set, hps_model, eval_hps_model, 
sample_hps_model] = load_env_compatible(data_dir, model_dir)
我希望输出是

INFO:tensorflow:Downloading http://github.com/hardmaru/sketch-rnn- 
datasets/raw/master/aaron_sheep/aaron_sheep.npz
INFO:tensorflow:Loaded 7400/300/300 from aaron_sheep.npz
INFO:tensorflow:Dataset combined: 8000 (7400/300/300), avg len 125
INFO:tensorflow:model_params.max_seq_len 250.
total images <= max_seq_len is 7400
total images <= max_seq_len is 300
total images <= max_seq_len is 300
INFO:tensorflow:normalizing_scale_factor 18.5198.

因此,我相信这是由于numpy to load()中的一个更改而出现的,如果您观察到发生错误的那一行,它引用了类似的内容

以np.load(路径)作为f:
x_-train,标签_-train=f['x_-train',f['y_-train']
x_检验,标签_检验=f['x_检验'],f['y_检验']
但是Keras源代码,例如第58行:

现在使用

将np.load(路径,allow_pickle=True)作为f:
x_-train,标签_-train=f['x_-train',f['y_-train']
x_检验,标签_检验=f['x_检验'],f['y_检验']
其中
np.load(路径)
变成
np.load(路径,布尔)

从简短的阅读中,添加
pickles
与安全性有关,因为
pickles
可以包含在加载某些内容时运行的任意Python代码。(可能与执行SQL注入的方式类似)


在用新的参数列表更新np.load之后,它对我的项目起作用了

这段代码解决了我这边的问题

# Downgrate numpy to fix a problem
!pip install numpy==1.16.2
import numpy as np
print(np.__version__)

我只是下调了numpy的评级,因为这个问题是由于一些内部冲突造成的

使用allow_pickle=True作为np.load()的参数之一。

这里的问题与imdb文本分类示例相同。我尝试了上面的代码,但它返回了[Errno 22]无效参数:“…@DuncanJerry,你能添加完整的错误日志吗?我猜罪魁祸首是
load\u env\u compatible(data\u dir,model\u dir)
,其中
load\u env\u compatible
的方法定义调用了某种形式的.load(),需要更新。-->1,其中np.load(data\u dir,allow\u pickle=True)与load\u env\u兼容:2列集、测试集、有效集、hps\u模型,eval_hps_model,sample_hps_model=load_env_compatible(data_dir,model_dir)[Errno 22]无效参数:“”Numpy 1.16.3几天前发布。在发行说明中:“函数np.load()和np.lib.format.read_array()采用allow_pickle关键字,响应CVE-2019-6446,该关键字现在默认为False”。降级到1.16.2对我有帮助,因为错误发生在某个库的深处。@DuncanJerry不客气。您可以将其标记为正确答案,以帮助其他人快速找到。在版本1.16.3中更改:响应CVE-2019-6446,将默认值设为False。请看:这是最简单的方法。它工作得很好,因为它实际上按预期处理问题。这是最好的答案。对我来说非常有效。
# Downgrate numpy to fix a problem
!pip install numpy==1.16.2
import numpy as np
print(np.__version__)