PyTorch如何训练只有标量损失的NN ?



假设我们有一个NN,我们想训练它从一个输入中预测3个值。我们有一组训练数据:

x_train = ((1, 5, 3, 2, 6), (1, 8, 6, 9, 3), ...) 

和目标

y_train = ((25, 32, 0.12), (.125, -5, 8), ...)

pytorch如何做训练,如果它只是计算一个标量作为损失函数?为什么它不能计算与每个输出神经元相关的损失?例如,如果x_train[0]的答案是(20,32,0.12),我们不想更新与答案(25,37,0.12)相同的权重,对吧?但在这种情况下,pytorch计算的损失将是相同的,因为它(对于经典的MSE损失)意味着所有错误。

pytorch如何在不知道错误来自何处的情况下正确训练nn ?

你的问题与pytorch无关,而是与一般的NN训练有关。

最后,每次训练都需要将损失最小化。损失是什么可以是很多东西,但最终它必须是标量,因为最小化向量是含糊不清的。

NN优化器不仅计算损失,而且还计算该损失相对于NN的所有可训练参数的梯度。因此,在挥手(不涉及大量方法)时,对损失影响较大的参数将移动很多,而几乎不影响损失的参数几乎不会改变。

这样它就知道错误从哪里来了

最新更新