pkl 파일의 압축을 푸는 방법은?
손으로 쓴 숫자 이미지로 구성된 MNIST 데이터 세트의 pkl 파일을 가지고 있습니다.
각각의 숫자 이미지를 보고 싶어서 pkl 파일의 포장을 풀어야 하는데 방법을 찾을 수가 없습니다.
pkl 파일의 압축을 풀거나 풀 수 있는 방법이 있습니까?
일반적으로.
당신의.pkl
사실 파일은 연쇄적인 것입니다.pickle
파일. 즉, Python의 모듈을 사용하여 덤프되었음을 의미합니다.
데이터 선택을 해제하려면 다음을 수행합니다.
import pickle
with open('serialized.pkl', 'rb') as f:
data = pickle.load(f)
MNIST 데이터 세트의 경우
모gzip
파일이 압축된 경우에만 필요합니다.
import gzip
import pickle
with gzip.open('mnist.pkl.gz', 'rb') as f:
train_set, valid_set, test_set = pickle.load(f)
각 세트를 추가로 분할할 수 있는 경우(즉, 교육 세트의 경우):
train_x, train_y = train_set
이러한 값은 세트의 입력(자리) 및 출력(라벨)입니다.
숫자를 표시하려는 경우:
import matplotlib.cm as cm
import matplotlib.pyplot as plt
plt.imshow(train_x[0].reshape((28, 28)), cmap=cm.Greys_r)
plt.show()
다른 대안은 원본 데이터를 살펴보는 것입니다.
http://yann.lecun.com/exdb/mnist/
그러나 파일의 이진 데이터를 읽기 위한 프로그램을 만들어야 하기 때문에 더 어렵습니다.는 당신이 파이썬을 하는 것을 합니다.pickle
보신 것처럼 매우 쉽습니다. ;-)
핸디 원라이너
pkl() (
python -c 'import pickle,sys;d=pickle.load(open(sys.argv[1],"rb"));print(d)' "$1"
)
pkl my.pkl
를 합니다.__str__
절인 것에 대하여
물체를 시각화하는 일반적인 문제는 물론 정의되지 않았습니다. 그래서 만약__str__
. 가 필요합니다. 사용자 지정 스크립트가 필요합니다.@dataclass
+pprint
관심이 있을 수 있습니다.객체의 모든 현재 속성과 값을 인쇄하는 내장 기능이 있습니까?
MNIST 직접 -idx3-ubyte.gz
로 변환합니다.
또한 http://yann.lecun.com/exdb/mnist/ 에서 공식 데이터 세트 파일을 쉽게 다운로드하여 다음과 같이 PNG로 확장할 수 있습니다.
다음의 스크립트를 사용합니다. https://github.com/myleott/mnist_png
관련:"mnist.pkl.gz"에서 사용되는 정확한 형식과 데이터 구조로 내 데이터 세트를 .pkl 파일에 넣는 방법은 무엇입니까?
원본 MNIST 파일로 작업하려는 경우 다음과 같이 역직렬화할 수 있습니다.
아직 파일을 다운로드하지 않은 경우 터미널에서 다음을 실행하여 먼저 다운로드합니다.
wget http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz
wget http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz
다음을 런그다음다저장다니합을로 합니다.deserialize.py
실행합니다.
import numpy as np
import gzip
IMG_DIM = 28
def decode_image_file(fname):
result = []
n_bytes_per_img = IMG_DIM*IMG_DIM
with gzip.open(fname, 'rb') as f:
bytes_ = f.read()
data = bytes_[16:]
if len(data) % n_bytes_per_img != 0:
raise Exception('Something wrong with the file')
result = np.frombuffer(data, dtype=np.uint8).reshape(
len(bytes_)//n_bytes_per_img, n_bytes_per_img)
return result
def decode_label_file(fname):
result = []
with gzip.open(fname, 'rb') as f:
bytes_ = f.read()
data = bytes_[8:]
result = np.frombuffer(data, dtype=np.uint8)
return result
train_images = decode_image_file('train-images-idx3-ubyte.gz')
train_labels = decode_label_file('train-labels-idx1-ubyte.gz')
test_images = decode_image_file('t10k-images-idx3-ubyte.gz')
test_labels = decode_label_file('t10k-labels-idx1-ubyte.gz')
이 스크립트는 절인 파일에서처럼 픽셀 값을 정규화하지 않습니다.그러기 위해서는, 당신이 해야 할 일은
train_images = train_images/255
test_images = test_images/255
피클(및 파일이 압축된 경우 gzip) 모듈을 사용해야 합니다.
참고: 표준 Python 라이브러리에 이미 있습니다.새 것을 설치할 필요
언급URL : https://stackoverflow.com/questions/24906126/how-to-unpack-pkl-file
'programing' 카테고리의 다른 글
ADO.NET을 사용하여 테이블 값 매개 변수 전달 (0) | 2023.08.07 |
---|---|
스프링 @자동 배선 속성 대 세터 (0) | 2023.08.07 |
대체 패턴에서 그룹 캡처에 대한 역참조 처리 (0) | 2023.08.07 |
HTML에서 세로줄을 만드는 방법 (0) | 2023.08.07 |
테이블 열 너비 설정 (0) | 2023.08.07 |