Hoe op te lossen ‘Object-arrays kunnen niet worden geladen wanneer allow_pickle=False’ in het sketch_rnn-algoritme

Ik draaide sketch_rnn.ipynb op mijn jupyter-notebook, bij het laden van de omgeving om de getrainde dataset te laden, gaf het een foutmelding ‘Object-arrays kunnen niet worden geladen wanneer allow_pickle=False’

Dit is de code die al door Google-ontwikkelaars werd gebruikt bij het ontwikkelen van het sketch_rnn-algoritme dat zelfs in de Google Colab werd uitgevoerd. In het verleden heb ik het zelf uitgevoerd op de Google Colab, het werkte, maar het lijkt niet te werken op mijn eigen jupyter-notebook

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)

ik verwachtte dat de uitvoer

. zou zijn

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.

Maar het gaf me

ValueError: Object arrays cannot be loaded when allow_pickle=False

Antwoord 1, Autoriteit 100%

Gebruik Toestand_pickle = TRUE als een van de argumenten voor NP.LOAD ().


Antwoord 2, Autoriteit 96%

Deze code heeft het probleem aan mijn zijde opgelost.

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

Ik ben gewoon downgrade numpy als het probleem te wijten is aan een interne conflicten.


Antwoord 3, Autoriteit 46%

Dus ik geloof dat dit zojuist is opgedoken vanwege een verandering in numpo om te laden (), als u de regel observeert die de fout optreedt, verwijst er zoiets als

   with np.load(path) as f:
        x_train, labels_train = f['x_train'], f['y_train']
        x_test, labels_test = f['x_test'], f['y_test']

Maar de broncode van Keras, bijvoorbeeld hier op regel 58: https://github.com/keras-team/keras/blob/master/keras/datasets/imdb.py

Gebruik nu

   with np.load(path, allow_pickle=True) as f:
        x_train, labels_train = f['x_train'], f['y_train']
        x_test, labels_test = f['x_test'], f['y_test']

waar np.load(path)wordt np.load(path, boolean)

Vanaf korte lezing, de toevoeging van picklesheeft te maken met beveiliging, omdat pickleseen willekeurige Python-code kunnen bevatten die zou worden uitgevoerd wanneer er iets is geladen. (Mogelijk vergelijkbaar met de manier waarop SQL-injecties worden uitgevoerd)

Na het updaten van NP.LOAD met de nieuwe paramelijst, werkt het voor mijn project

Other episodes