我正在为音素对齐做一个序列到序列的模型。具体来说,我的火车数据看起来像成对的序列(音素-长度),其中音素是一个单热向量,长度是一个浮点数。所以我想给模型输入一个音素序列,得到一个对应的长度序列。
我的网络通常是这样构建的:
model = Sequential(
EmbeddingLayer{embeddingSize} :
RecurrentLSTMLayerStack {lstmDims} :
LinearLayer{1}
)
如果我做对了,LinearLayer{1}
应该从 1 转换lstmDims
。因此,当我为模型提供长度为 N 的序列时,我也应该得到长度为 N 的结果序列。
现在我想设置一个合适的损失函数,我认为它应该是已知结果序列的元素与模型输出之间的平均差异。应该通过时间轴进行平均,以便可以管理不同长度的序列。
我打算做类似的事情
objectives = Input(1) #actually a sequence here as stated in the reader
result = model(features)
errs = Abs(objectives - result)
loss_function = ReduceMean(errs)
criterionNodes = (loss_function)
但在减少操作中明确指出
这些操作不支持对序列进行归约。相反,您可以通过重复来实现这一点。
我不确定如何为我的任务使用重复。而且我也不确定整个概念是否正常。