tensorflow中softmax_cross_entropy和sparse_softmax_cross_entropy的区别

tensorflow中softmax_cross_entropy和sparse_softmax_cross_entropy的区别

都是softmax cross entropy损失函数,区别在于label的编码形式:

  • tf.losses.softmax_cross_entropy,需要的是one-hot编码的label

  • tf.losses.sparse_softmax_cross_entropy,需要的是一个整数(代表类别索引)的label

ref

tf.contrib.eager.XXXMetric的使用

m = SomeMetric(...)    #创建一个metric对象
for input in ...:
    m(input)                   #持续的给metric喂入数据
print(m.result())            #向metric要计算结果,则调用实现定义好的计算公式,以及累计喂入的数据,计算

例如:

import tensorflow.contrib.eager as tfe
epoch_loss_avg = tfe.metrics.Mean()  # 创建loss metric对象
for x, y in train_dataset:
        grads = grad(model, x, y)
        optimizer.apply_gradients(zip(grads, model.variables),
                                  global_step=tf.train.get_or_create_global_step())
        
        # Track progress
        epoch_loss_avg(loss(model, x, y))  # 给loss metric对象喂数据
print('In current epoch, average loss is: {:.f}'.format(epoch_loss_avg.result()))

猜你喜欢

转载自www.cnblogs.com/zjutzz/p/9318023.html