如何设计神经网络以识别不同特征?

我正在尝试使用TensorFlow构建一个神经网络,并使用tf.layers.dense接口。我想弄清楚如何让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个不同人的特征。感谢您的帮助!


回答:

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

您需要一个包含batch_size个不同输出的1D张量,对吗?每个完整团队在批次中有一个输出。

另一方面,如果我将所有团队特征放入一个单一的数组中,我认为网络将无法知道这些实际上是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]等来增强数据集。您基本上可以添加所有可能的排列组合。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注