【问题标题】:How to design a neural network to recognize distinct features?如何设计一个神经网络来识别不同的特征?
【发布时间】:2018-06-25 07:39:14
【问题描述】:

我正在尝试使用 tf.layers.dense 接口在 tensorflow 中构建神经网络。我想弄清楚如何让 tensorflow 将所有功能视为一组功能。

一个例子:

将一群人分类为好/坏的篮球队(0-坏,1-好)。 每个人都有自己的特点(性别、年龄、身高、体重、打篮球的年限)。要将整个团队分类为好或坏,神经网络必须查看 5 个人的特征,并且输出应该是 0 或 1。

现在在这个例子中,我如何让网络看到与不同人相关的所有不同特征并输出单个分类数字?

我假设它与输入张量的形状有关,我尝试制作形状为 [batch_size, number_of_players, number_of_features] 的张量,如下所示:

[
 [[gender, age, height, weight, years_playing_basketball],
  [gender, age, height, weight, years_playing_basketball],
  [gender, age, height, weight, years_playing_basketball], //team1
  [gender, age, height, weight, years_playing_basketball],
  [gender, age, height, weight, years_playing_basketball]],

 [[gender, age, height, weight, years_playing_basketball],
  [gender, age, height, weight, years_playing_basketball],
  [gender, age, height, weight, years_playing_basketball], //team2
  [gender, age, height, weight, years_playing_basketball],
  [gender, age, height, weight, years_playing_basketball]]
]

自然地,在将这个张量通过几个 tf.layers.dense 层之后,输出也将是一个 3D 张量,而我只需要一个数字作为输出。另一方面,如果我将所有团队特征放在一个数组中,我相信网络将无法知道这些实际上是 5 个不同人的特征。提前感谢您的帮助!

【问题讨论】:

  • 希望您的网络能够正确学习输入并正确识别权重。您可以通过使用大小为 5 的隐藏层来加快此过程,或许可以诱导网络使用该层中的每个节点作为每个人的总体评分。

标签: python tensorflow neural-network artificial-intelligence shape


【解决方案1】:

自然地,在将这个张量通过几个 tf.layers.dense 层之后,输出也将是一个 3D 张量,而我只需要一个数字作为输出。

你需要一个具有batch_size 不同输出的一维张量,对吗?批次中每个完整团队一个输出。

另一方面,如果我将所有团队特征放在一个数组中,我相信网络将无法知道这些实际上是 5 个不同人的特征。

这是最常见的解决方案,也可能是最好的解决方案。绝对是最简单的。这个解决方案只有在你确定每个团队总是有 5 人的情况下才有效,我想这是一个安全的假设?

这种解决方案通常被称为“扁平化”(在许多框架中,您可以使用名为 flatten 的函数将 (number_of_players, number_of_features) 张量转换为 (number_of_players * number_of_features) 张量)。是的,你是对的,神经网络无法“知道”团队成员 X 的年龄特征在某种程度上与团队成员 Y 的年龄特征同样重要,或者“知道”年龄和团队成员 X 的性别特征在某种程度上比团队成员 X 的年龄特征和团队成员 Y 的性别特征更密切相关......但这通常没问题。如果事实证明学习这样的东西很重要,它仍然可以这样做。


另一个提示:如果不同人员出现在同一团队中的顺序无关紧要(例如,如果没有一些重要的、一致的基于位置的排序或类似的东西),我建议增加您的数据,还包括您已经拥有的数据团队的改组版本。例如,如果您的数据包含一个团队 [P1, P2, P3, P4, P5](其中每个 P 是与一个人相对应的一系列特征),我将通过添加一个团队 [P2, P1 , P3, P4, P5] 和一个团队 [P3, P1, P2, P4, P5] 等。你基本上可以添加所有可能的排列。

【讨论】:

  • 是的,我的意思是每批一个输出 :) 谢谢你的详细回答!
猜你喜欢
  • 1970-01-01
  • 2018-01-22
  • 2011-07-30
  • 2020-10-19
  • 2017-01-30
  • 1970-01-01
  • 2013-06-09
  • 2011-01-02
  • 1970-01-01
相关资源
最近更新 更多