在 pytorch 中将哈希值保存为张量
Save a Hash Value as a Tensor in pytorch
我有一个数据集,其中包含保存为字符串的标识符。
我想创建一个神经网络,除其他外,将这些标识符作为标签,然后检查两个标识符是否完全相同。如果它们相同,那么如果网络预测错误值,我想增加损失。
例如,标识符如下所示 ec2c1cc2410a4e259aa9c12756e1d6e
始终为 32 个值并使用十六进制字符 (0-9a-f)。
我想在 pytorch
中使用这个值并将其保存为 tensor
但我遇到了以下问题
decimal_identifier = int(string_id, 16)
tensor_id = torch.ToTensor(decimal_identifier)
RuntimeError: Overflow when unpacking long
所以我无法将值转换为小数,因为值太大了。
知道我该如何解决这个问题吗?
我知道它总是 32 个字符,但我还没有在 pytorch
.
中找到一个字符张量
如何在我的神经网络中输入这个唯一标识符?
问题是 int(string_id, 16)
将您的 32 字符长散列转换为 单个 整数。这真是一个非常非常大的数字。
相反,您可以将其转换为数组:
tensor_id = torch.tensor([int(c, 16) for c in string_id])
结果(在您的示例中):
tensor([14, 12, 2, 12, 1, 12, 12, 2, 4, 1, 0, 10, 4, 14, 2, 5, 9, 10,
10, 9, 12, 1, 2, 7, 5, 6, 14, 1, 13, 6, 14])
您也可以一次将十六进制数字分组为 8 个(对于 int64 张量):
torch.tensor([int(string_id[i:i+8], 16) for i in range(0, len(string_id), 8)], dtype=torch.int64)
我有一个数据集,其中包含保存为字符串的标识符。
我想创建一个神经网络,除其他外,将这些标识符作为标签,然后检查两个标识符是否完全相同。如果它们相同,那么如果网络预测错误值,我想增加损失。
例如,标识符如下所示 ec2c1cc2410a4e259aa9c12756e1d6e
始终为 32 个值并使用十六进制字符 (0-9a-f)。
我想在 pytorch
中使用这个值并将其保存为 tensor
但我遇到了以下问题
decimal_identifier = int(string_id, 16)
tensor_id = torch.ToTensor(decimal_identifier)
RuntimeError: Overflow when unpacking long
所以我无法将值转换为小数,因为值太大了。
知道我该如何解决这个问题吗?
我知道它总是 32 个字符,但我还没有在 pytorch
.
如何在我的神经网络中输入这个唯一标识符?
问题是 int(string_id, 16)
将您的 32 字符长散列转换为 单个 整数。这真是一个非常非常大的数字。
相反,您可以将其转换为数组:
tensor_id = torch.tensor([int(c, 16) for c in string_id])
结果(在您的示例中):
tensor([14, 12, 2, 12, 1, 12, 12, 2, 4, 1, 0, 10, 4, 14, 2, 5, 9, 10, 10, 9, 12, 1, 2, 7, 5, 6, 14, 1, 13, 6, 14])
您也可以一次将十六进制数字分组为 8 个(对于 int64 张量):
torch.tensor([int(string_id[i:i+8], 16) for i in range(0, len(string_id), 8)], dtype=torch.int64)