我尝试为GCP引擎包编写自己的估计器model_fn()。我使用embedding_rnn_decoder解码了一系列输出,如下所示:
outputs, state = tf.contrib.legacy_seq2seq.embedding_rnn_decoder(
decoder_inputs = decoder_inputs,
initial_state = curr_layer,
cell = tf.contrib.rnn.GRUCell(hidden_units),
num_symbols = n_classes,
embedding_size = embedding_dims,
feed_previous = False)我知道输出是“一个与2D张量的decoder_inputs长度相同的列表”,但是我想知道如何使用这个列表来计算整个序列的损失函数?
我知道,如果我抓取输出0,那么我可能会因为以下原因而丢失:
logits = tf.layers.dense(
outputs[0],
n_classes)
loss = tf.reduce_mean(
tf.nn.sparse_softmax_cross_entropy_with_logits(
logits=logits, labels=labels)是否适合为输出中的每个项目生成损失值,然后将这些都传递给tf.reduce_mean?这感觉效率很低,特别是对于长序列--有没有其他方法可以更有效地计算序列每一步的softmax?
发布于 2017-08-16 20:11:57
看起来我的问题的解决方案是使用sequence_loss_by_example
发布于 2017-08-17 12:41:55
我认为你正在寻找sequence_loss (目前正在进行contrib/ a类型的孵化)。
https://stackoverflow.com/questions/45705252
复制相似问题