8.5节计算loss时为什么传入标签而不是独热编码?

在“8.5. 循环神经网络的从零开始实现”节,train_epoch_ch8计算交叉熵传入的两个参数是y_hat和y.long():

l = loss(y_hat, y.long()).mean()

y_hat是根据样本预测得到的softmax概率,形状为(batch_sizenum_steps, len(vocab)),
y.long()是形状为(batch_size
num_steps),每个元素为字符对应的索引。

问题来了,第二个参数为什么不传入标签的独热编码?计算索引和softmax概率之间的交叉熵看起来怪怪的,就算利用广播机制将将单个索引扩展为向量也说不通。

谢谢!

1 Like