在 PyTorch 的张量中将一个数字范围内插到另一个数字范围
Interpolate one range of numbers to another in a tensor in PyTorch
我正在尝试将一组数字 {0, 4, 6} 转换为连续的数字 {0, 1, 2}。
目前我正在使用 Scipy
的 interp1d
函数。我的问题是我想更改张量的每个元素。有没有比将 interp1d
函数广播到张量中的每个元素更好的方法?如果不是,我怎样才能实现自定义函数的广播
目前我正在做以下事情:
>>> a = torch.tensor([[0, 6, 4],
[4, 0, 4]])
>>> unique_values = np.unique(a)
>>> interpolator = interp1d(unique_values, range(len(unique_values)))
>>> interpolator(a[0, 1])
>>> 2
如果只想替换,为什么要插值?
a[a==6]=2
a[a==4]=1
应该可以。如果你不想硬编码,你可以像你一样找到唯一的值,对它们进行排序,然后循环替换它们。
我正在尝试将一组数字 {0, 4, 6} 转换为连续的数字 {0, 1, 2}。
目前我正在使用 Scipy
的 interp1d
函数。我的问题是我想更改张量的每个元素。有没有比将 interp1d
函数广播到张量中的每个元素更好的方法?如果不是,我怎样才能实现自定义函数的广播
目前我正在做以下事情:
>>> a = torch.tensor([[0, 6, 4],
[4, 0, 4]])
>>> unique_values = np.unique(a)
>>> interpolator = interp1d(unique_values, range(len(unique_values)))
>>> interpolator(a[0, 1])
>>> 2
如果只想替换,为什么要插值?
a[a==6]=2
a[a==4]=1
应该可以。如果你不想硬编码,你可以像你一样找到唯一的值,对它们进行排序,然后循环替换它们。