0

我是概率编程和 ML 的新手。我正在关注 pyro 网站上给出的深度马尔可夫模型的代码。该代码的 github 页面的链接是:

https://github.com/pyro-ppl/pyro/blob/dev/examples/dmm/dmm.py

我了解大部分代码。我不明白的部分是他们从第 175 行开始使用的小批量想法。

问题 1: 有人可以解释他们在使用 mini-batch 时在做什么吗?

他们在 pyro 文档中说

mini_batch 是一个三维张量,第一个维度是批次维度,第二个维度是时间维度,最后一个维度是特征(在我们的例子中是 88 维)

问题2: 这里的时间维度是什么意思?

因为我想在我的数据集上使用这个代码,这是一个顺序数据。我对我的数据进行了一次热编码,使其维度为(10000,500,20),其中 10000 是示例/序列的数量,500 是每个序列的长度,20 是特征的数量。

问题 3: 我如何在这里使用我的一个热编码数据作为小批量?

如果这是一个非常基本的问题,我很抱歉,但我们将不胜感激。

该文档的链接是:

https://pyro.ai/examples/dmm.html

4

1 回答 1

0

问题 1:有人可以解释他们在使用 mini-batch 时在做什么吗?

为了优化大多数深度学习模型,我们使用小批量梯度下降。这里,Amini_batch指的是少数例子。假设我们有 10,000 个训练示例,我们想要创建 50 个示例的小批量。因此,总共将有 200 个小批量,我们将在整个数据集的一次迭代中执行 200 次参数更新。

问题 2:这里的时间维度是什么意思?

在您的 data:(10000, 500, 20)中,第二个维度是指时间维度。您可以认为您有 500 个时间步长的示例(t1, t2, ..., t500)

问题 3:如何在这里使用我的 one-hot 编码数据作为 mini-batch?

在您的场景中,您可以将数据(10000, 500, 20)分成 200 个小批量,(50, 500, 20)其中 50 是小批量中示例/序列的数量,500 是每个序列的长度,20 是特征的数量。

我们如何决定 mini-batch 的大小?基本上,我们可以像我们模型的任何其他超参数一样调整批量大小。

于 2019-09-25T00:16:58.503 回答