PyTorch für Deep Learning. Ian Pointer

PyTorch für Deep Learning - Ian Pointer


Скачать книгу
umfasst. Wenn Sie es mit flat_tensor.reshape(3,28,28) versuchen, werden Sie einen Fehler wie diesen sehen:

      RuntimeError Traceback (most recent call last)

      <ipython-input-26-774c70ba5c08> in <module>()

      ----> 1 flat_tensor.reshape(3,28,28)

      RuntimeError: shape '[3, 28, 28]' is invalid for input of size 784

      Sie fragen sich jetzt vielleicht, worin der Unterschied zwischen view() und reshape() besteht. Die Antwort ist, dass view() als ein Abbild des ursprünglichen Tensors funktioniert – wenn also die zugrunde liegenden Daten geändert werden, wird sich auch das Abbild ändern (und umgekehrt). Allerdings kann view() Fehler verursachen, wenn das erforderliche Abbild nicht kontinuierlich ist; d.h., wenn der Tensor nicht denselben Speicherblock teilt, den er belegen würde, wenn ein neuer Tensor mit der erforderlichen Form von Grund auf erstellt werden würde. Wenn dies geschieht, müssen Sie tensor.contiguous() aufrufen, bevor Sie view() verwenden können. Da reshape() jedoch all das hinter den Kulissen erledigt, empfehle ich im Allgemeinen die Verwendung von reshape() anstelle von view().

      Schließlich müssen Sie möglicherweise die Dimensionen eines Tensors neu anordnen. Dies wird Ihnen wahrscheinlich bei Bildern begegnen, da diese oft in Form von [Höhe, Breite, Kanal]-Tensoren gespeichert sind. PyTorch sieht jedoch die Anordnung [Kanal, Höhe, Breite] vor, um diese zu verarbeiten. Sie können die Funktion permute() nutzen, um diesem Problem auf eine ziemlich einfache Art und Weise zu begegnen:

      hwc_tensor = torch.rand(640, 480, 3)

      chw_tensor = hwc_tensor.permute(2,0,1)

      chw_tensor.shape

      > torch.Size([3, 640, 480])

      Hier haben wir gerade die Funktion permute auf einen [640,480,3]-Tensor angewendet, wobei die Argumente den Indizes der Dimensionen des Tensors entsprechen. Dadurch haben wir erreicht, dass die letzte Dimension (2, da der Index bei 0 beginnt) an der ersten Stelle unseres Tensors steht, gefolgt von den restlichen zwei Dimensionen in ihrer ursprünglichen Reihenfolge.

       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.

       Zusammenfassung

      Ob in der Cloud oder auf Ihrem lokalen Rechner, Sie sollten jetzt PyTorch installiert haben. Ich habe den grundlegenden Baustein der Bibliothek, den Tensor, vorgestellt, und Sie haben einen kurzen Blick auf Jupyter Notebook geworfen. Das ist alles, was Sie zum Einstieg benötigen! Im nächsten Kapitel verwenden Sie alles, was Sie bisher gesehen haben, um mit dem Aufbau neuronaler Netze und der Klassifizierung von Bildern zu beginnen. Vergewissern Sie sich also, dass Sie mit Tensoren und Jupyter vertraut sind, bevor Sie weitermachen.

       Weiterführende Literatur

       Dokumentation zum Jupyter-Projekt (https://jupyter.org/documentation)

       PyTorch-Dokumentation (https://pytorch.org/docs/stable)

       AWS Deep Learning AMIs (https://oreil.ly/G9Ldx)

       Azure Data Science Virtual Machines (https://oreil.ly/YjzVB)

       Google Deep Learning VM Image (https://oreil.ly/NFpeG)

       PyTorch-Ökosystem (https://pytorch.org/ecosystem/)

       PyTorch-Ressourcen (https://pytorch.org/resources/)

      Конец ознакомительного фрагмента.

      Текст предоставлен ООО «ЛитРес».

      Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.

      Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.

/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAABQAAD/4QQeaHR0cDov L25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENl aGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4 OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA2LjAtYzAwMiA3OS4xNjQ0NjAsIDIwMjAvMDUvMTItMTY6 MDQ6MTcgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5 OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHht bG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0i aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1w PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3Jn L2RjL2VsZW1lbnRzLzEuMS8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpFMEM4 ODJFRkJFMjA2ODExODIyQUM5Q0QzMjdGMzU3QyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpE OEEzQUNCQ0Y3RjMxMUVBQUQyODgxOURFRDQ4QjlDQSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlp ZDpEOEEzQUNCQkY3RjMxMUVBQUQyODgxO
Скачать книгу