Читать книгу PyTorch für Deep Learning - Ian Pointer - Страница 39
Tensor-Broadcasting
ОглавлениеAn NumPy angelehnt, ermöglicht Broadcasting die Durchführung von Operationen zwischen einem Tensor und einem kleineren Tensor. Rückwärts ausgehend von den letzten Dimensionen, können Sie über zwei Tensoren broadcasten, wenn:
die beiden Dimensionen identisch sind,
eine der Dimensionen 1 ist.
Hier ein Beispiel:
a = torch.ones(1,2,2)
> tensor([[[1., 1.],
[1., 1.]]])
b = torch.ones(1,2)
> tensor([[1., 1.]])
c = a + b
> tensor([[[2., 2.],
[2., 2.]]])
c.shape
> torch.Size([1, 2, 2])
Wenn wir Tensor b zu Tensor a addieren, erhalten wir als Ergebnis Tensor c. Dabei wurde der kleinere Tensor so erweitert, dass er die Dimensionen des größeren Tensors abdeckt. Würden wir versuchen, einen [2,2]-Tensor zu einem [3,3]-Tensor zu addieren, erhielten wir diese Fehlermeldung:
The size of tensor a (2) must match the size of
tensor b (3) at non-singleton dimension 1
Wir könnten jedoch problemlos einen [1,3]-Tensor zu einem [3,3]-Tensor addieren. Das Broadcasting ist ein praktisches kleines Feature, das den Code kürzer macht und oft schneller ist, als den Tensor selbst manuell zu erweitern.
Das ist alles, was Sie zunächst in puncto Tensoren benötigen, um anzufangen! Wir werden später im Verlauf des Buchs noch weitere Operationen aufgreifen. Widmen wir uns nun Kapitel 2.