如何解决尝试编写读取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 举报,一经查实,本站将立刻删除。