这个函数用于计算所有examples(假设一句话有n个单词,一个单词及单词所对应的label就是一个example,所有example就是一句话中所有单词)的加权交叉熵损失,logits参数是一个2D Tensor构成的列表对象,每一个2D Tensor的尺寸为[batch_size x num_decoder_symbols],函数的返回值是一个1D float类型的Tensor,尺寸为batch_size,其中的每一个元素代表当前输入序列example的交叉熵。另外,还有一个与之类似的函数sequence_loss,它对sequence_loss_by_example函数返回的结果进行了一个tf.reduce_sum运算,因此返回的是一个标称型float Tensor。
进一步理解:
logits 的shape = [batch_size*numsteps, vocab_size], vocab_size是(分类)类别的个数
targets 的shape = [batch_size*num_steps]
sequence_loss_by_example的做法是,针对logits中的每一个num_step,即[batch_size, vocab_size], 对所有vocab_size个预测结果,得出预测值最大的那个类别,与target中的值相比较计算Loss值
http://blog.csdn.net/u012436149/article/details/52874718
# Defines a list of `num_steps&

该博客探讨了TensorFlow中的sequence_loss_by_example函数,该函数计算加权交叉熵损失,适用于处理序列数据。logits参数为[batch_size x num_decoder_symbols]的2D Tensor列表,返回值为每个序列example的损失。与sequence_loss不同,后者是对前者结果的求和。文章还介绍了logits、targets的形状,并讨论了函数如何计算损失值。
最低0.47元/天 解锁文章
&spm=1001.2101.3001.5002&articleId=54017873&d=1&t=3&u=ff75a20022b94a19be4f27082e1a8f4c)
1176

被折叠的 条评论
为什么被折叠?



