problème
J'essaie de charger un fichier à l'aide de PyTorch, mais de l'Erreur State archive/data.pkl
n'existe pas.
Code
import torch
cachefile = 'cacheddata.pth'
torch.load(cachefile)
Sortie
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-4-8edf1f27a4bd> in <module>
1 import torch
2 cachefile = 'cacheddata.pth'
----> 3 torch.load(cachefile)
~/opt/anaconda3/envs/matching/lib/python3.8/site-packages/torch/serialization.py in load(f, map_location, pickle_module, **pickle_load_args)
582 opened_file.seek(orig_position)
583 return torch.jit.load(opened_file)
--> 584 return _load(opened_zipfile, map_location, pickle_module, **pickle_load_args)
585 return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
586
~/opt/anaconda3/envs/matching/lib/python3.8/site-packages/torch/serialization.py in _load(Zip_file, map_location, pickle_module, **pickle_load_args)
837
838 # Load the data (which may in turn use `persistent_load` to load tensors)
--> 839 data_file = io.BytesIO(Zip_file.get_record('data.pkl'))
840 unpickler = pickle_module.Unpickler(data_file, **pickle_load_args)
841 unpickler.persistent_load = persistent_load
RuntimeError: [enforce fail at inline_container.cc:209] . file not found: archive/data.pkl
Hypothèse
Je suppose que cela a quelque chose à voir avec le cornichon, de docs :
Ce processus de sauvegarde/chargement utilise la syntaxe la plus intuitive et implique la moindre quantité de code. Enregistrement d'un modèle de cette manière permet de sauvegarder le module entier à l'aide du module de cornichon de Python. L'inconvénient de cette approche est que les données sérialisées sont liées aux classes spécifiques et à la structure exacte utilisée lorsque le modèle est enregistré. La raison en est que le cornichon ne sauvegarde pas la classe modèle elle-même. Il enregistre plutôt un chemin vers le fichier contenant la classe, qui est utilisé pendant la période de charge. Pour cette raison, votre code peut casser de différentes manières lorsqu'il est utilisé dans d'autres projets ou après les refacteurs.
Versions
Éteint le fichier était en quelque sorte corrompu. Après le générer à nouveau, il chargé sans problème.