Computer vision 如何创建一个在-1和1之间均匀分布值的批次大小张量?

Computer vision 如何创建一个在-1和1之间均匀分布值的批次大小张量?,computer-vision,pytorch,Computer Vision,Pytorch,标题大致概括了这一点,我正在尝试实现一个GAN: 如何使用pytorch创建一个批大小为-1和1之间均匀分布值的张量 def create_latent_batch_vectors(batch_size, latent_vector_size, device): ''' The function creates a random batch of latent vectors with random values distributed uniformly between -1 and 1.

标题大致概括了这一点,我正在尝试实现一个GAN: 如何使用pytorch创建一个批大小为-1和1之间均匀分布值的张量

def create_latent_batch_vectors(batch_size, latent_vector_size, device):
'''
The function creates a random batch of latent vectors with random values 
distributed uniformly between -1 and 1. 
Finally, it moves the tensor to the given ```device``` (cpu or gpu).
The output should have a shape of [batch_size, latent_vector_size].
'''
# maybe torch.distributions.uniform.Uniform() somehow?
return z.to(device)

谢谢

首先让我们定义一个均匀分布,低范围为-1,高范围为+1

dist = torch.distributions.uniform.Uniform(-1,1)
sample_shape = torch.Size([2])
dist.sample(sample_shape)
>tensor([0.7628, 0.3497])
这是形状2的张量(样本形状)。它没有批处理形状。让我们检查一下:

dist.batch_shape
>torch.Size([])
现在让我们使用
展开
。它实质上是通过扩展批处理形状来创建一个新的分发实例

new_batch_shape = torch.Size([5])   # batch_shape of [5]
expanded_dist = dist.expand(new_batch_shape)
检查:

expanded_dist.batch_shape
>torch.Size([5])
创建形状张量[批次大小,样本形状]

expanded_dist.sample(sample_shape)
>tensor([[0.1592, 0.3404, 0.3520, 0.3038, 0.0393],
        [0.9368, 0.0108, 0.5836, 0.6156, 0.6704]])
三种类型的形状定义如下:

  • 样本形状描述了分布中独立、相同分布的绘图
  • 批处理形状描述独立的、分布不一致的绘图。也就是说,我们可能有一套(不同的) 相同分布的参数化。这使公共服务成为可能 机器学习中的一批示例的用例,每个示例由 它自己的分布
  • 事件形状描述分布中单个绘图(事件空间)的形状;它可能是跨维度的