cómo desempaquetar un archivo pkl


Tengo un archivo pkl del conjunto de datos MNIST, que consiste en imágenes de dígitos escritas a mano.

Me gustaría echar un vistazo a cada una de esas imágenes de dígitos, así que necesito desempaquetar el archivo pkl, excepto que no puedo averiguar cómo.

¿Hay alguna forma de descomprimir/descomprimir el archivo pkl?

Author: Peque, 2014-07-23

2 answers

En general

Su archivo pkl es, de hecho, un archivo serializado pickle, lo que significa que ha sido volcado usando el archivo de Python pickle módulo.

Para des-pickle los datos puede:

import pickle


with open('serialized.pkl', 'rb') as f:
    data = pickle.load(f)

Para el conjunto de datos del MNIST

Nota gzip solo es necesario si el archivo está comprimido:

import gzip
import pickle


with gzip.open('mnist.pkl.gz', 'rb') as f:
    train_set, valid_set, test_set = pickle.load(f)

Donde cada conjunto se puede dividir más (es decir, para el conjunto de entrenamiento):

train_x, train_y = train_set

Esas serían las entradas (dígitos) y salidas (etiquetas) de su sets.

Si desea mostrar los dígitos:

import matplotlib.cm as cm
import matplotlib.pyplot as plt


plt.imshow(train_x[0].reshape((28, 28)), cmap=cm.Greys_r)
plt.show()

mnist_digit

La otra alternativa sería mirar los datos originales:

Http://yann.lecun.com/exdb/mnist /

Pero eso será más difícil, ya que necesitará crear un programa para leer los datos binarios en esos archivos. Así que te recomiendo usar Python, y cargar los datos con pickle. Como has visto, es muy fácil. ;-)

 75
Author: Peque,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-25 15:23:53

Práctico one-liner

pkl() (
  python -c 'import pickle,sys;d=pickle.load(open(sys.argv[1],"rb"));print(d)' "$1"
)
pkl my.pkl

Imprimirá __str__ para el objeto en escabeche.

El problema genérico de visualizar un objeto es, por supuesto, indefinido, por lo que si __str__ no es suficiente, necesitará un script personalizado.

 1
Author: Ciro Santilli 新疆改造中心 六四事件 法轮功,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-08 11:01:37