如何在 Torch 的 GPU 上将张量的元素限制/舍入到小数点后 4 位?

Posted

技术标签:

【中文标题】如何在 Torch 的 GPU 上将张量的元素限制/舍入到小数点后 4 位?【英文标题】:How to limit/round elements of a tensor to 4 decimal places on GPU in Torch? 【发布时间】:2017-08-02 21:17:30 【问题描述】:

我想知道,如何将 GPU 上的张量精度截断到所需的小数位?我想将张量中的元素限制为小数点后 4 位,但似乎 Torch 中没有内置函数可以有效地做到这一点。有谁知道如何做到这一点?

【问题讨论】:

【参考方案1】:

将张量中的数字四舍五入仍然不是直截了当的,但一个简单的解决方案(哪种适合我的目的)是将张量转换为半精度,如下所示:

require 'cutorch'

temp = torch.rand(3, 3)
temp = temp:cuda()
temp = temp:cudaHalf()

【讨论】:

【参考方案2】:

更好的解决方案肯定是首先将张量转换为 numpy,然后使用 numpy 的 round 函数。例如:

import torch
import numpy as np

x = torch.randn(size = (30, 10, 10)).numpy()
print(x)
x = np.round(x, 4)
print(x)

只需比较 x 舍入前后的打印输出语句即可。

【讨论】:

以上是关于如何在 Torch 的 GPU 上将张量的元素限制/舍入到小数点后 4 位?的主要内容,如果未能解决你的问题,请参考以下文章

Torch.load()使用方式

pytorch张量torch.Tensor类型的构建与相互转换以及torch.type()和torch.type_as()的用法

pytorch张量torch.Tensor类型的构建与相互转换以及torch.type()和torch.type_as()的用法

pytorch张量torch.Tensor类型的构建与相互转换以及torch.type()和torch.type_as()的用法

pytorch张量torch.Tensor类型的构建与相互转换以及torch.type()和torch.type_as()的用法

Torch / Lua,如何选择数组或张量的子集?