【发布时间】:2017-05-24 14:14:04
【问题描述】:
我正在做一个音素对齐的序列到序列模型。具体来说,我的火车数据看起来像成对序列(phoneme - length),其中 phoneme 是一个单热向量,而 length 是一个浮点数。 所以我想给模型输入一个 phoneme 序列,得到一个对应的 length 序列。
我的网络通常是这样构建的:
model = Sequential(
EmbeddingLayer{embeddingSize} :
RecurrentLSTMLayerStack {lstmDims} :
LinearLayer{1}
)
如果我做对了,LinearLayer{1} 应该从 lstmDims 转换为 1。
所以当我给模型输入一个长度为 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)
但在Reduction Operations 中明确指出
这些操作不支持对序列进行归约。相反,您可以通过重复来实现这一点。
我不确定如何为我的任务使用重复。而且我也不确定整个概念是否合适。
【问题讨论】:
标签: deep-learning lstm cntk