CBOW相当于填字游戏, 学习CBOW的时候对NLLLoss的一点研究: NLLLoss的定义是一大堆公式, 没有仔细学习, 用实践法研究一下其作用:
criterion = nn.NLLLoss() … loss = criterion(out, target)
在本例中, 其中 out 是一个数组(list), target 是一个float张量 out 的长度代表了 字典的长度. print(out) tensor([[-6.7951, -3.5001, -6.4829, -5.4005, -6.5381, -3.1883, -3.9513, -4.2790, -6.8641, -6.7017, -5.5150, -5.2415, -5.0595, -0.5234, -5.9353, -3.8215, -5.7704, -6.4269, -4.9297, -5.0495, -6.1361, -6.2943, -7.2959, -3.6133, -5.6585, -3.4199, -6.0891, -6.1402, -6.4806, -5.5290, -5.9832, -4.9311, -6.0941, -7.0798, -5.2637, -4.5294, -6.1587, -4.9618, -5.3551, -2.5602, -6.7787, -5.6728, -4.7116, -5.1451, -6.3173, -4.9062, -5.8129, -6.2326, -6.0875]], device=‘cuda:0’, grad_fn=) print(target) tensor([13], device=‘cuda:0’) 可以发发现 下标 13 位置的数值 -0.5234 是所有数组里最接近0的.
所以猜测, NLLLoss 所有数组里最接近0的下标, 就是target的数值.
多个结果均符合猜测
|