【发布时间】:2020-03-12 06:32:59
【问题描述】:
我正在尝试使用 TensorFlow 和 Keras 设计基于深度学习的分类模型。在我的模型中,标签是一个可变长度的序列,例如:ABC、CADB 或 ABCDB。
为简单起见,在输出层我使用固定长度(等于最长序列的长度)来存储所有序列。因此,如果序列的长度比固定长度短,则该序列由 one-hot 向量(对应于序列的实际长度)和零向量(对应于剩余长度)表示。
例如,如果固定长度为 5,则一个序列 CADB 用一个 4 * 5 的矩阵表示,如下所示:
请注意:这个矩阵的前 4 列是 one-hot 向量,每个向量都有一个且只有一个 1 条目,其他所有条目都是 0。但是最后一列的条目都是0,可以看作是补零,因为序列不够长。
如果所有向量都是 one-hot 向量,分类交叉熵是损失函数的不错选择。但在我的情况下,一些向量(例如上图中的第 5 列)只有 0 个条目,分类交叉熵在这里不起作用。
所以我的问题是:在这种情况下使用什么损失函数?
【问题讨论】:
-
您能否添加更多关于您正在解决的问题的信息?以及您使用的架构类型?
-
嗨@VivekMehta,感谢您的回复。我正在设计一个基于深度学习的分类模型。在我的模型中,标签是字母序列,而字母来自像 {A,B,C,D} 这样的有限集合。主要问题是序列具有可变长度。所以我对输出层有两种选择:要么先预测长度,要么使用带有零填充的固定长度。
-
模型的输入是什么?在做文本分类吗?
-
有点像文本分类。但关键是输出层复杂且难以设计。你有什么好主意吗? @VivekMehta
-
是的,你是对的。那么您对我的问题有什么解决方案吗?
标签: machine-learning optimization keras deep-learning loss-function