borch

Learn · 0

버그 고쳐 보기

배우지 못하는 학습 루프 둘. 각각 틀린 줄이 하나씩 있다. 찾아서 고치고 Run 을 누르면 — 손실이 내려갔는지 페이지가 말해 준다. torch 에 쓰던 그대로의 Python 이고, 설치할 것은 없다.

제자리에 선 루프

손실은 15 step 마다 찍힌다. 우선 그대로 돌려 숫자를 읽어 보자: 움직이지 않는다. 한 줄의 인자 하나가 이유다.

막혔다면 — 답.

lr=0.0 은 학습률 0 이다: opt.step() 은 가중치를 lr × gradient 만큼 움직이는데, 0 에 무엇을 곱해도 0 이다. lr=0.1 로 바꿔 보자. 너무 큰 학습률은 그것대로 실패한다 — 다음엔 1.0 을 넣고 지켜보자.

달아나는 루프

이번엔 학습률이 제대로 있는데도 자리에 못 앉는다. 돌려 보자: 손실이 오르내리기만 하고 자리를 못 잡는다 — 60 step 뒤에도 처음 그 자리다. 루프 안에서 호출 하나가 빠졌다.

막혔다면 — 답.

gradient 는 쌓인다: backward() 는 매번 .grad 를 갈아끼우지 않고 더한다. 그래서 그 앞에 opt.zero_grad() 가 없으면 매 step 이 지금까지의 gradient 전부의 합만큼 움직인다. 루프 본문 첫 줄에 opt.zero_grad() 를 되돌려 놓자.

지금 손에 있는 것

브라우저 탭 안에서 y = 3x + 1 을 배운 모델이고, import 한 줄 빼면 torch 코드다. 어느 서빙 런타임이든 읽는 그 파일로 내보낼 수 있다:

이것이 torch.onnx.export 이고, 페이지 자신의 파일시스템에 쓴다. torch 와 다른 곳은 Python 페이지에 전부 있다 — 짧다.

다음은 어디로. 레슨 1 은 TypeScript 쪽을 텐서부터 시작한다. Playground 는 당신의 코드를 돌린다, Python 이든 TypeScript 든. Models 페이지는 safetensors 로 사전학습 네트워크를 여기서 돌린다.