Use Pytorch to accelerate with GPU or apple silicon with Metal
sequenceDiagram participant 1D as 1D Tensor participant 2D as 2D Tensor participant 3D as 3D Tensor Note over 1D: Start: tensor([1, 2, 3, 4])<br>Shape: [4] rect rgb(230, 245, 255) Note over 1D,3D: 1D → 2D Transformations 1D->>2D: unsqueeze(0) Note right of 2D: [1, 4]: [[1, 2, 3, 4]] 1D->>2D: view(2, 2) Note right of 2D: [2, 2]: [[1, 2], [3, 4]] 1D->>2D: reshape(2, 2) Note right of 2D: [2, 2]: [[1, 2], [3, 4]] end rect rgb(245, 230, 255) Note over 1D,3D: 2D → 3D Transformations Note over 2D: From: tensor([[1, 2], [3, 4]])<br>Shape: [2, 2] 2D->>3D: unsqueeze(0) Note right of 3D: [1, 2, 2]: [[[1, 2], [3, 4]]] 2D->>3D: view(1, 2, 2) Note right of 3D: [1, 2, 2]: [[[1, 2], [3, 4]]] 2D->>3D: expand(2, 2, 2) Note right of 3D: [2, 2, 2]: Broadcasts data end rect rgb(255, 230, 230) Note over 1D,3D: Reverse Transformations 3D->>2D: squeeze(0) Note right of 2D: [2, 2]: [[1, 2], [3, 4]] 2D->>1D: flatten() Note right of 1D: [4]: [1, 2, 3, 4] end Note over 1D,3D: All Available PyTorch Tensor Commands: rect rgb(240, 255, 240) Note over 1D,3D: Basic Dimension Commands Note right of 3D: unsqueeze(dim)<br>squeeze(dim)<br>squeeze()<br>flatten(start_dim, end_dim)<br>view(*shape)<br>view_as(other)<br>reshape(*shape)<br>reshape_as(other)<br>expand(*sizes)<br>expand_as(other) end rect rgb(255, 240, 220) Note over 1D,3D: Dimension Reordering Note right of 3D: t()<br>transpose(dim0, dim1)<br>permute(*dims)<br>movedim(source, destination)<br>swapaxes(dim0, dim1)<br>swapdims(dim0, dim1) end rect rgb(230, 245, 255) Note over 1D,3D: Splitting & Combining Note right of 3D: chunk(chunks, dim)<br>split(split_size, dim)<br>split_with_sizes(split_sizes, dim)<br>stack(tensors, dim)<br>cat(tensors, dim)<br>unbind(dim) end rect rgb(245, 230, 255) Note over 1D,3D: Indexing & Selection Note right of 3D: narrow(dim, start, length)<br>select(dim, index)<br>index_select(dim, index)<br>masked_select(mask)<br>take(index)<br>take_along_dim(indices, dim)<br>gather(dim, index)<br>scatter(dim, index, src) end rect rgb(255, 230, 230) Note over 1D,3D: Advanced Operations Note right of 3D: unfold(dimension, size, step)<br>diagonal(offset, dim1, dim2)<br>as_strided(size, stride)<br>roll(shifts, dims)<br>tile(*reps)<br>repeat(*sizes)<br>repeat_interleave(repeats, dim) end rect rgb(230, 255, 230) Note over 1D,3D: Memory & Layout Note right of 3D: contiguous()<br>clone()<br>detach()<br>to(device)<br>cpu()<br>cuda()<br>pin_memory() end rect rgb(255, 255, 230) Note over 1D,3D: Shape Inspection Note right of 3D: size()<br>dim()<br>ndim<br>numel()<br>shape<br>stride()<br>storage_offset()<br>is_contiguous() end Note over 1D,3D: Common Combined Operations:<br>x.view(-1).unsqueeze(0) # Flatten and add batch dim<br>x.permute(0,2,1).contiguous() # Reorder and optimize<br>x.squeeze().view(-1) # Remove singleton dims and flatten
Leave a Reply