gpt4 book ai didi

neural-network - 多输出多类 Keras 模型

转载 作者:行者123 更新时间:2023-12-01 01:54:25 25 4
gpt4 key购买 nike

对于我拥有的每个输入,我都有一个关联的 49x2 矩阵。这是一对输入输出对的样子

input :
[Car1, Car2, Car3 ..., Car118]

output :
[[Label1 Label2]
[Label1 Label2]
...
[Label1 Label2]]

其中 Label1 和 Label2 都是 LabelEncode,它们分别有 1200 和 1300 个不同的类。

只是为了确保这就是我们所说的多输出多类问题?

我试图展平输出,但我担心模型无法理解所有类似的 Label 共享相同的类。

是否有一个 Keras 层可以处理输出这种奇特的数组形状?

最佳答案

通常,多类问题对应于输出一组类的概率分布的模型(通常通过交叉熵对实际类的 one-hot 编码进行评分)。现在,无论您是将其构建为一个单一输出、两个输出、49 个输出还是 49 x 2 = 98 个输出,这都意味着拥有 1,200 x 49 + 1,300 x 49 = 122,500 个输出单元——这不是计算机无法做到的处理,但也许不是最方便的东西。您可以尝试将每个类的输出设为单个(例如线性)单位并舍入其值以选择标签,但是,除非标签具有某种数字含义(例如顺序、大小等),否则这不太可能奏效.

如果输入中元素的顺序具有某种意义(即,对其进行改组会影响输出),我想我会通过 RNN 来解决问题,例如 LSTM 或双向 LSTM 模型,具有两个输出。使用 return_sequences=TrueTimeDistributed Dense输出的 softmax 层,对于每个 118 长的输入,您将有 118 对输出;那么您可以使用时间样本加权来删除,例如,前 69 个(或者,如果您使用双向模型,可以先删除 35 个,最后删除 34 个)并计算剩余 49 对的损失标签。或者,如果这对您的数据有意义(也许没有),您可以使用更高级的东西,例如 CTC (虽然 Keras 没有,但我试图将 TensorFlow implementation 整合到其中,但没有太大成功),即 also implemented in Keras (感谢 @indraforyou)!。

如果输入中的顺序没有意义但输出的顺序有意义,那么你可以有一个 RNN,其中你的输入是原始的 118 长向量加上一对标签(每个一个热编​​码),输出是又是一对标签(又是两个 softmax 层)。这个想法是你在每一帧上得到一个 49x2 输出的“行”,然后你将它与初始输入一起反馈给网络以获得下一个;在训练时,您会将输入与“上一个”标签(第一个标签的空标签)一起重复 49 次。

如果没有可利用的顺序关系(即输入和输出的顺序没有特殊含义),那么问题只能由最初的 122,500 个输出单元(加上您可能需要的所有隐藏单元)来真正表示做对了)。您还可以在常规网络和 RNN 之间尝试某种中间立场,在那里您有两个 softmax 输出,以及 118 长的向量,您包括您想要的输出的“id”(例如作为 49 -long one-hot 编码向量);如果 49 个输出中每个标签的“含义”相似或具有可比性,则它可能会起作用。

关于neural-network - 多输出多类 Keras 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41708506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com