对于不同大小的输入,我应该使用哪种类型的神经网络?

Posted

技术标签:

【中文标题】对于不同大小的输入,我应该使用哪种类型的神经网络?【英文标题】:What type of neural network should I be using for different sized inputs? 【发布时间】:2018-09-26 11:28:21 【问题描述】:

我正在尝试构建一个神经网络来帮助预测一名 NBA 球员在一个赛季中的总体幻想得分。我为球员职业生涯的每个赛季所做的就是使用一组特定的统计数据来得出该赛季的总体生产得分。我想建立某种类型的回归模型,可以预测未来三年球员的生产得分。

示例输入,其中每个数组是球员的职业生涯产量:

[22.3, 44, 33.1],

[10, 16.2, 42, 67, 54.3, 68.9, 62, 43, 12],

[45, 79, 58, 54, 42],

[12, 24],

[33, 67, 72, 80.3, 94.6, 74]

我见过的大多数神经网络都期望输入具有相同数量的特征,但在这种情况下,每个玩家都会根据他们玩了多少个赛季而有不同数量的输入。我看到有人建议将缺失的数据值归零,但我不想这样做,因为 NN 会开始预期在几个季节后产量会大幅下降,而零对于产量得分来说是一个有意义的值。

是否有一个神经网络可以处理每个玩家的不同输入长度?并且它会使用球员的职业生涯长度来帮助预测球员未来的生产得分吗?

【问题讨论】:

查看序列到序列模型 【参考方案1】:

这正是循环神经网络所针对的问题!循环神经网络采用系列输入,并且对于系列中的每个时间步只有一个节点共享/重复。它可以处理可变大小的输入,但请注意,如果您不愿意对输入进行零填充,则不可避免地必须一次运行每个输入。没有办法对锯齿状​​输入矩阵进行矢量化。如果您没有太多数据,那么这将不是什么大问题。查看here 了解更多信息。

【讨论】:

非常感谢您的回复。如果可以请说明“您将不可避免地一次运行每个输入”。我不完全确定这意味着什么。 另外,如果零在数据集中是一个有意义的值,我可以使用诸如 -99999 之类的数字而不是 0 并且 NN 会知道丢弃该值吗? 通常当你运行一个神经网络时,你一次将你的数据运行到它们中,这被称为“批处理”。因此,例如,您可以一次向神经网络提供 32、64 或 128 个示例进行训练。这样做的好处是速度。利用矢量化的程序将同时处理 32 个或 64 个或 128 个示例,并显着加快该过程。但是,如果您坚持所有输入都是可变长度的,那么您将无法利用这一点,您将不得不强制神经网络一次训练一个示例。 我不会用 -99999 填充您的输入。如果您没有太多数据,则只需将输入保持为可变长度,然后一次训练一个示例。

以上是关于对于不同大小的输入,我应该使用哪种类型的神经网络?的主要内容,如果未能解决你的问题,请参考以下文章

应该使用哪种数据类型来存储哈希?

我应该在 React 中使用哪种类型的组件:功能组件或类基础组件?

我应该使用这种多类多标签(?)问题的哪种损失函数?

对于 SQL Server 2008 中长度为 13 位的 ID 号,我可以使用哪种数据类型?

我应该如何对不同方向的图像进行分类?

如何在 Keras 中训练网络以适应不同的输出大小