배우기 · 1
텐서
텐서는 모양이 있는 배열이고, GPU 메모리에 있다. 아래 코드는 전부 이 페이지에서 돈다 — 고쳐 놓고 Run 을 누르거나 ⌘/Ctrl + Enter.
장치를 잡는다
무엇보다 await init() 이 먼저다. WebGPU 어댑터를 잡는 것이 비동기라
피할 길이 없다 — 한 번 부르고 잊으면 된다. 못 잡으면 borch 는 더 느린 것으로
내려가지 않고 거기서 멈춘다.
만들기
Tensor.from(data, shape) 는 납작한 배열과 원하는 모양을 받는다.
만드는 함수의 이름은 torch 의 것이다 — zeros·ones·
arange·randn·eye·linspace.
값을 읽는 것은 await 다
torch 와 갈리는 두 번째 자리다. 수는 GPU 메모리에 있고 그것을 자바스크립트로
가져오는 것은 복사라서, item() 과 toArray() 는 약속을
돌려준다. 순방향·역방향은 동기다 — 건너오는 것은 읽기뿐이다.
torch 가 둘로 나눠 둔 축약은 여기서도 둘이다: amax() 가 값을 주고
max(dim) 이 { values, indices } 를 준다.
연산
원소별 연산은 torch 와 같은 규칙으로 브로드캐스트한다. 다만 인자는 수가 아니라
텐서다 — 자바스크립트에는 연산자 재정의가 없어서 스칼라는
Tensor.full([], 5) 로 적고, 흔한 자리에는 powScalar(k)
가 따로 있다.
모양과 뷰
reshape·transpose·slice 는 torch 가 저장소를
공유하는 자리에서 똑같이 공유한다. 적합성 검사가 그 13 가지를 값이 아니라
저장소로 대조한다 — torch 가 공유하는 자리에서 복사하는 구현은
값이 맞으므로, 값만 보는 검사로는 한참 뒤에야 드러난다.