创建具有所需值的火炬张量
Create a torch tensor with desired values
我想创建一个大小为 100 且值为 10 和 100 的火炬张量。
例如:下面给出了一个值在 5 到 6 之间的张量。
torch.randint(5,7,(100,))
tensor([6, 6, 6, 5, 5, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6, 5, 6, 5, 5, 6, 5, 5, 5, 5,
6, 5, 5, 5, 5, 5, 6, 6, 6, 5, 6, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 5, 6, 5,
5, 6, 5, 6, 5, 6, 5, 6, 6, 6, 6, 5, 6, 6, 6, 5, 5, 5, 6, 6, 6, 6, 5, 6,
5, 5, 5, 5, 6, 6, 5, 6, 6, 6, 5, 5, 6, 6, 5, 6, 6, 6, 5, 5, 5, 5, 5, 6,
6, 6, 5, 6])
而不是这个,我想要一个值为 10 和 100 的张量,我不想要整数 10 和 100 之间的值。张量应该只包含 10 和 100。我该怎么做?
提前致谢。
如果您从 {0, 1}
采样,那么从 [0, 1]
到 [10, 100]
的简单映射就足够了
此处 x -> (b-a)x + a = (100-10)x + 10 = 90x + 10
将起作用:
>>> rand = torch.randint(0, 2, (100,))
tensor([0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0,
0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0,
0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1,
0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1,
1, 1, 0, 0])
>>> 90*rand+10
tensor([ 10, 10, 100, 100, 100, 100, 10, 100, 100, 100, 100, 10, 10, 100,
100, 10, 100, 100, 10, 100, 100, 100, 10, 10, 10, 10, 10, 100,
10, 10, 100, 10, 100, 100, 10, 10, 100, 10, 10, 10, 10, 10,
100, 10, 10, 100, 10, 10, 10, 100, 100, 100, 100, 10, 100, 100,
10, 10, 100, 10, 100, 10, 100, 10, 100, 100, 10, 10, 10, 10,
100, 100, 10, 10, 100, 100, 10, 10, 10, 100, 10, 10, 100, 10,
100, 100, 10, 10, 100, 10, 100, 10, 10, 10, 100, 100, 100, 100,
10, 10])
您可以通过使用 python 函数 random.choice() 创建随机数列表然后将其转换为张量来实现:
import random
import torch
list_numbers = random.choices([100,10], k=100)
random_numbers = torch.Tensor(list_numbers)
print(random_numbers)
我想创建一个大小为 100 且值为 10 和 100 的火炬张量。 例如:下面给出了一个值在 5 到 6 之间的张量。
torch.randint(5,7,(100,))
tensor([6, 6, 6, 5, 5, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6, 5, 6, 5, 5, 6, 5, 5, 5, 5,
6, 5, 5, 5, 5, 5, 6, 6, 6, 5, 6, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 5, 6, 5,
5, 6, 5, 6, 5, 6, 5, 6, 6, 6, 6, 5, 6, 6, 6, 5, 5, 5, 6, 6, 6, 6, 5, 6,
5, 5, 5, 5, 6, 6, 5, 6, 6, 6, 5, 5, 6, 6, 5, 6, 6, 6, 5, 5, 5, 5, 5, 6,
6, 6, 5, 6])
而不是这个,我想要一个值为 10 和 100 的张量,我不想要整数 10 和 100 之间的值。张量应该只包含 10 和 100。我该怎么做?
提前致谢。
如果您从 {0, 1}
采样,那么从 [0, 1]
到 [10, 100]
的简单映射就足够了
此处 x -> (b-a)x + a = (100-10)x + 10 = 90x + 10
将起作用:
>>> rand = torch.randint(0, 2, (100,))
tensor([0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0,
0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0,
0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1,
0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1,
1, 1, 0, 0])
>>> 90*rand+10
tensor([ 10, 10, 100, 100, 100, 100, 10, 100, 100, 100, 100, 10, 10, 100,
100, 10, 100, 100, 10, 100, 100, 100, 10, 10, 10, 10, 10, 100,
10, 10, 100, 10, 100, 100, 10, 10, 100, 10, 10, 10, 10, 10,
100, 10, 10, 100, 10, 10, 10, 100, 100, 100, 100, 10, 100, 100,
10, 10, 100, 10, 100, 10, 100, 10, 100, 100, 10, 10, 10, 10,
100, 100, 10, 10, 100, 100, 10, 10, 10, 100, 10, 10, 100, 10,
100, 100, 10, 10, 100, 10, 100, 10, 10, 10, 100, 100, 100, 100,
10, 10])
您可以通过使用 python 函数 random.choice() 创建随机数列表然后将其转换为张量来实现:
import random
import torch
list_numbers = random.choices([100,10], k=100)
random_numbers = torch.Tensor(list_numbers)
print(random_numbers)