尝试编写读取MNIST数据的程序,但只能读取像'\x00\x00\x08\x01'这样的字符串并且不能转换为int

问题描述

我已经广泛搜索了有关如何处理 MNIST 数据、如何将 '\x00\x00\x08\x01' 转换为数字以及如何处理 "\x" 的信息,但没有任何信息过来。我想了解 MNIST 文件发生了什么以及如何自己将其放入数组中(尤其是因为该网站说它是一种基本格式),但是我不知道从哪里开始。首先,我只是尝试从训练标签文件中读取 32 位幻数。它应该读作 int 2049。

这是我目前的代码

f = open(r"data file directory","r")
num = int(f.read(4))
print(num)

代码返回 ValueError: invalid literal for int() with base 2: '\x00\x00\x08\x01'

我试图用

直接阅读它
num = f.read(4)

返回“”

尝试直接打印 ("\x05") 或类似的也会打印 ""

我曾尝试为 int 使用不同的基数,例如

num = int(f.read(4),16)

num = int(f.read(4),2)

以字符串形式读取并在 \x 处拆分

num = str(f.read(4).split("\x"))

返回 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \xXX escape

用原始字符串分割,再分割两次也不行

num = str(f.read(4).split(r"\x"))

返回 ['\x00\x00\x08\x01']

num = str(f.read(4).split(r"\x")[0].split(r"\x"))

返回 ['\x00\x00\x08\x01']

num = str(f.read(4).split(r"\x")[0].split("\x"))

返回 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \xXX escape

该数字在显示 \x00\x00\x08\x01 的输出中清楚地写为一个字节,但我无法摆脱所有的 \x。有关文件格式的信息位于 http://yann.lecun.com/exdb/mnist/。我知道这可能与cpu架构有关,我不太了解。 MNIST 网站声明“文件中的所有整数都以大多数非英特尔处理器使用的 MSB 优先(高端)格式存储。”由于我使用的是 AMD cpu,我认为这不是问题,但如果是,我不知道从哪里开始。我可以使用预处理的 MNIST 数据集之一,但我想了解这里发生的所有事情。谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)