首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tensorflow rnn_decoder在每个decoder_output上执行softmax

tensorflow rnn_decoder在每个decoder_output上执行softmax
EN

Stack Overflow用户
提问于 2017-08-16 12:44:25
回答 2查看 250关注 0票数 1

我尝试为GCP引擎包编写自己的估计器model_fn()。我使用embedding_rnn_decoder解码了一系列输出,如下所示:

代码语言:javascript
复制
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,那么我可能会因为以下原因而丢失:

代码语言:javascript
复制
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?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-16 20:11:57

看起来我的问题的解决方案是使用sequence_loss_by_example

票数 0
EN

Stack Overflow用户

发布于 2017-08-17 12:41:55

我认为你正在寻找sequence_loss (目前正在进行contrib/ a类型的孵化)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45705252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档