pytorch autograd 예제

고맙게도 자동 분화를 사용하여 신경망에서 역방향 패스의 계산을 자동화할 수 있습니다. PyTorch의 오토그라드 패키지는 이 기능을 정확히 제공합니다. autograd를 사용하는 경우 네트워크의 전달 패스는 계산 그래프를 정의합니다. 그래프의 노드는 텐서가 되고 가장자리는 입력 텐서에서 출력 텐서를 생성하는 함수가 됩니다. 이 그래프를 통해 역전파하면 그라데이션을 쉽게 계산할 수 있습니다. PyTorch : 자동 차별화 패키지 — torch.autograd 몇 가지 기본 신경망을 구축하기 위해 오토 그라드 패키지와 텐서 객체를 사용하는 등 PyTorch를 사용하여 다음 단계를 수행하려면 공식 PyTorch 60 분 블리츠 또는이 튜토리얼을 제안합니다. 오토그라드에 대한 문서입니다. 함수는 https://pytorch.org/docs/stable/autograd.html#function 우리는 계산 그래프에 작업을 추가하는 사용자 정의 함수를 만들 수 있습니다. 다음은 사용자 고유의 ReLU 함수를 빌드하는 예제입니다( 참고: 이 토론에서 영감을 얻은 예제: https://discuss.pytorch.org/t/clarification-using-backward-on-non-scalars/1059) 이 예제에서는 nn 패키지를 사용하여 이전과 같이 모델을 정의합니다.

최적화 패키지에서 제공하는 Adam 알고리즘을 사용하여 모델을 최적화합니다: 위의 예제에서는 신경망의 앞뒤로 패스를 수동으로 구현해야 했습니다. 뒤로 패스를 수동으로 구현하는 것은 작은 2계층 네트워크에서는 큰 문제가 되지 않지만 대규모 복잡한 네트워크의 경우 매우 털이 많을 수 있습니다. PyTorch에는 유도체를 찾기 위한 무거운 작업을 수행하는 자동 분화 패키지인 오토그라드가 포함되어 있습니다. 이 게시물은 신경망 외부의 자동 그라드를 사용하여 간단한 파생 상품을 살펴봅습니다. 주의해야 할 중요한 점은 z.backward()가 호출될 때 텐서가 자동으로 z.backward(torch.tensor(1.0))로 전달된다는 것입니다. torch.tensor(1.0)는 체인 규칙 그라데이션 곱셈을 종료하기 위해 제공된 외부 그라데이션입니다. 이 외부 그라데이션은 MulBackward 함수에 대한 입력으로 전달되어 x의 그라데이션을 추가로 계산합니다. .backward()로 전달된 텐서의 치수는 그라데이션이 계산되는 텐서의 치수와 같아야 합니다. 예를 들어 그라데이션 사용 텐서 x와 y가 다음과 같다면 모든 API를 함께 묶을 수 있지만 수동으로 역전파를 수행하는 예는 다음과 같습니다. 몇 가지 예를 통해 좀 더 간단한 용어로 살펴보겠습니다.

계산 그래프와 오토그라드는 복잡한 연산자 정의를 정의하고 자동으로 파생 상품을 복용하는 데 매우 강력한 패러다임입니다. 그러나 큰 신경망의 경우 원시 자동 그라드가 너무 낮은 수준일 수 있습니다. 이제 이 경우 y는 더 이상 스칼라가 아닙니다. torch.autograd 직접 전체 야코비안을 계산할 수 없습니다., 하지만 우리는 단지 벡터-야코비안 제품을 원하는 경우, 단순히 인수로 뒤로 벡터를 전달: 참고: 이러한 예제는 PyTorch에 대 한 업데이트 되었습니다 0.4, 핵심 PyTorch에 몇 가지 주요 변경 한 Api. 특히 0.4 텐서 이전에는 오토그라드를 사용하기 위해 가변 객체에 래핑해야 했습니다. 이제 이 기능이 텐서에 직접 추가되었으며 변수는 더 이상 사용되지 않습니다. 나는 위의 기능을 말했는가? 기본적으로 함수에 대한 추상화입니다. 입력을 받아 출력을 반환하는 것입니다.

예를 들어, 두 개의 변수인 a와 b가 있는 경우, 이 예제에서는 2계층 네트워크를 사용자 지정 모듈 하위 클래스로 구현합니다. 그러나 사용하려는 방식은 다릅니다. 변수는 신경망 훈련 중에 변경되는 값, 즉 네트워크의 학습 가능한 파라마터를 보유하도록 특별히 조정되었습니다. 반면에 텐서를 사용하여 학습할 수 없는 값을 저장합니다. 예를 들어, 텐서가 각 예제에서 생성된 손실 값을 저장하는 데 사용될 수 있습니다.

Dieser Eintrag wurde veröffentlicht in Allgemein. Lesezeichen auf den Permanentlink.