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
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()))