我有原始/原始格式的MNIST数据集
我想将其转换为CSV,将额外的培训数据附加到文件末尾,然后将其转换回ubyte数据
我可以将数据转换为CSV,如下所示:
import json
import sys
def convert(imgf, labelf, outf, n):
f = open(imgf, "rb")
o = open(outf, "w")
l = open(labelf, "rb")
f.read(16)
l.read(8)
images = []
for i in range(n):
image = [ord(l.read(1))]
for j in range(28*28):
image.append(ord(f.read(1)))
images.append(image)
for image in images:
o.write(",".join(str(pix) for pix in image)+"\n")
f.close()
o.close()
l.close()
convert("train-images-idx3-ubyte", "train-labels-idx1-ubyte","mnist_train.csv", 60000)
convert("t10k-images-idx3-ubyte", "t10k-labels-idx1-ubyte","mnist_test.csv", 10000)
…然后我需要添加额外的训练数据行(尚未解决),然后我想将数据重新编码回原始的ubyte数据,因为数据集正在被输入到需要ubyte数据的管道中
我找到了这个我认为可能有用的图书馆:
import csv
import sys
import numpy as np
import idx2numpy
with open(sys.argv[1], 'r') as f:
data = list(csv.reader(f, delimiter=","))
data = np.array(data, dtype=np.float)
idx2numpy.convert_to_file('myfile_copy.idx', data)
f_write = open('myfile_copy2.idx', 'wb')
idx2numpy.convert_to_file(f_write, data)
但是,当我查看输出时,原始MNIST ubyte数据如下所示:
'T???<$?????????????ƪ4CrHr????????????BCCC;??jS????S???,;??>??? ??:~??K??9??????#&??M??s???4=???4y???(y??t}????]????????????Վ???z4???
???M??z??A???Au???
L????????????
???#????N???
????????
??????+%????
但是使用idx2numpy代码的输出如下所示:
'@@U@g @c?@b?@N@B@k?@o?@o?@o?@o?@n @h?@h?@h?@h?@h?@h?@h?@h?@e@@J@P?@\?@R@\?@d`@l`@o?@l @o?@o?@o?@o@@l?@o?@o?@a?@1@P?@,@P?@P?@P?@M?@5@m?@o?@Z?@T?@o?@j @2@6@m @o?@T?@` @o?@m?@F@M?@o @o?@O@`?@o?@g`@@"@i?@o@M@_?@o?@f?@R?@o`@n@L?@3@k?@o?@d?@i`@o?@k`@A?@C@o?@o?@S@@?@l@o?@\???@`?@o?@o?@J@N?@n@@o?@o?@J@^@@o?@o?@k`@D@^@@o?@i?@2@@]@_@@e`@o?@o?@b?@W@@e @o?@o?@o?@o?@o?@o?@k@@>@e @o?@o?@o?@j?@a?@f@o?@o?@^?@J@o@@o?@j@@@@
有人能解释一下这里发生了什么(除了它显然是其他二进制类型之外)以及如何修复它吗
目前没有回答
相关问题 更多 >
编程相关推荐