如何解决如何创建 -1 和 1 之间均匀分布值的批量 batch_size 张量?
标题几乎概括了它,我正在尝试实现一个 GAN: 如何使用 pytorch 创建一个在 -1 和 1 之间均匀分布的值的批量 batch_size 张量?
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 (sample_shape) 的张量。它没有batch_shape。让我们检查一下:
dist.batch_shape
>torch.Size([])
现在让我们使用 expand
。它本质上是通过扩展 batch_shape
来创建一个新的分发实例。
new_batch_shape = torch.Size([5]) # batch_shape of [5]
expanded_dist = dist.expand(new_batch_shape)
检查:
expanded_dist.batch_shape
>torch.Size([5])
创建形状为 [batch_size,sample_shape] 的张量
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]])
三种类型的形状定义如下:
- 样本形状描述了来自分布的独立同分布抽取。
- 批次形状 描述了独立的、非同分布的绘制。也就是说,我们可能有一组(不同的) 相同分布的参数化。这使常见的 一批示例的机器学习用例,每个示例都由 它自己的发行版。
- 事件形状描述来自分布的单个绘制(事件空间)的形状;它可能跨维度依赖。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。