考虑以下简单的操作,
>>> t
tensor([ 1.8750, -0.6875, -1.1250, -1.3750, 1.3750, -1.1250, 0.4688, -0.4062,
0.8750, -1.7500], dtype=torch.float)
>>> t.view(torch.uint8)
tensor([ 63, 179, 185, 187, 59, 185, 47, 173, 54, 190], dtype=torch.uint8)
>>> t.view(torch.uint8).shape
torch.Size([10])
>>> t.view(torch.uint8).numpy()
array([ 63, 179, 185, 187, 59, 185, 47, 173, 54, 190], dtype=uint8)
>>> torch.as_tensor(t.view(torch.uint8).numpy())
tensor([ 63, 179, 185, 187, 59, 185, 47, 173, 54, 190], dtype=torch.uint8)
>>> torch.as_tensor(t.view(torch.uint8).numpy()).view(torch.float)
tensor([ 1.8750, -0.6875, -1.1250, -1.3750, 1.3750, -1.1250, 0.4688, -0.4062,
0.8750, -1.7500], dtype=torch.float)
我对如何在类型转换中保留信息感到困惑。原始张量的类型为 float8,然后转换为 uint8 (0-255)。然后使用 uint8 numpy 数组来初始化 float8 张量。这种转换顺序难道不会导致信息丢失吗?