有人可以解释使用 RNN 的回归模型的批量大小和时间步长吗?

Posted

技术标签:

【中文标题】有人可以解释使用 RNN 的回归模型的批量大小和时间步长吗?【英文标题】:Can someone explain batch-size and timestep for a regression model using RNN? 【发布时间】:2021-11-11 20:07:09 【问题描述】:

我正在研究一个回归模型,该模型每小时有 50 个数据点。我很难决定批量大小和时间步长之间的差异。据我了解,批量大小用于决定在进行预测之前我们要考虑多少个数据点。值越大,模型收敛所需的时间越长。如果是这种情况,我对批量大小的定义很清楚。所以如果我的模型不需要很长时间,我可以使用最大值吗?这个最大值会是测试数据大小吗?

那么时间步长呢?对于您测量的模型,假设温度每分钟直到 30 小时,时间步长是多少? 如果知道使用 RNN 进行回归的人能回答我的疑问,我将不胜感激。

【问题讨论】:

看看EpyNN 如果您建议我研究 EpyNN。我确实在那里搜索了我的问题的答案,不幸的是我找不到任何东西。不过还是谢谢。 阅读源代码。时间步长与 RNN 前向传播有关。批量大小与数据嵌入有关。或者,只需在 RNN 页面上为“step”执行 ctrl+F。此外,您可以在link 那里找到数据准备方面的答案(例如您关于温度的问题) 【参考方案1】:

给定:

import numpy as np

x = np.array([[[1], [0], [1]]])

print(x.shape)

输出:

(1, 3, 1)

这是针对m 样本s 时间步长和e 每个时间步长的测量值。

(m, s, e)

在任何情况下,数据点的数量都是数组的大小,所以:

m * s * e

每个样本的数据点数:

s * e

如果您在一小时内每秒测量一个样品的温度。

(1, 3600, 1)

如果您测量温度和湿度。

(1, 3600, 2)

假设您同时对 2 个样本(在位置 A 和 B)执行此操作。

(2, 3600, 2)

批量大小根本不相关。

对于每个 epoch,它仅表示您想要一次运行多少个样本。例如,对于 100 个批量大小为 50 的样本,每个 epoch 有两次权重更新。

【讨论】:

我对你在一个样本上所说的意思感到困惑。我的 x 数据具有相同的形状 [instances, timesteps, # of Independent variables],所以如果我有 2500 个数据点,则形状变为 [2500, timesteps, 8],这里 8 是输入特征的数量。感谢您的时间和解释,这意味着很多。 sample 表示您命名法中的实例。但绝对让我们详细浏览 EpyNN 网站和源代码(参见 github)。我为此写了 EpyNN :)。 "输入 X 的形状为 (m, s, e),其中 m 等于样本数,s 是序列中的步骤数,e 是序列每个步骤中的元素数。"我确实浏览了github源代码,但是我仍然不清楚如何选择步数。假设我们测量了 20 多个小时并获得了 2000 个数据点。 2000 是米。如果你想改变s,你是否也必须改变m。如果 m 是 2000,s 必须是 1? 另外,感谢批量大小的解释。这与我之前所说的相反。批量越小,每个 epoch 更新的权重就越多,花费的时间就越长。 您没有“选择”时间步数。我认为您很困惑,并且您认为 RNN 单元/单元的数量与时间步长有关。无论如何都不是。见here。对于批量大小,它不一定(仅)与速度相关联。见here。

以上是关于有人可以解释使用 RNN 的回归模型的批量大小和时间步长吗?的主要内容,如果未能解决你的问题,请参考以下文章

难以在 2 层 RNN 中正确设置批量大小

使用 dropout (TF2.0) 时,可变批量大小不适用于 tf.keras.layers.RNN?

输入数据形状和大小,RNN Keras,回归

具有批量大小的字符 RNN 分类

最简单的RNN回归模型入门(PyTorch)

word2vec 的 RNN 模型 (GRU) 到回归不学习