微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何创建 -1 和 1 之间均匀分布值的批量 batch_size 张量?

如何解决如何创建 -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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?