--- id: working-with-torchtensor---comfyui title: "Working with torch.Tensor - ComfyUI" category: "10_Wiki/Topics" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: [] duplicate_of: "" source_trust_level: "B" confidence_score: 0.8 created_at: 2026-05-20 updated_at: 2026-05-20 review_reason: "" merge_history: [] tags: ["web", "wikify"] raw_sources: ["https://docs.comfy.org/custom-nodes/backend/tensors"] applied_in: [] github_commit: "" --- # [[Working with torch.Tensor - ComfyUI]] ## ๐ŸŽฏ ํ•œ ์ค„ ํ†ต์ฐฐ (One-line insight) ComfyUI์˜ ํ•ต์‹ฌ ์—ฐ์‚ฐ์€ [[pytorch]]๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ์ด๋ฏธ์ง€, Latent, Mask ๋ฐ์ดํ„ฐ๋Š” ๋ชจ๋‘ [[torch.Tensor]] ํ˜•ํƒœ๋กœ ๋‚ด๋ถ€์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ## ๐Ÿง  ํ•ต์‹ฌ ๊ฐœ๋… (Core concepts) * **[[torch.Tensor]]์˜ ์ •์˜**: ๋ฒกํ„ฐ๋‚˜ ํ–‰๋ ฌ์„ ์ž„์˜์˜ ์ฐจ์›์œผ๋กœ ์ผ๋ฐ˜ํ™”ํ•œ ์ˆ˜ํ•™์  ๊ตฌ์กฐ์ฒด๋กœ, Rank(์ฐจ์› ์ˆ˜)์™€ Shape(ํฌ๊ธฐ)๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. * **ํ…์„œ ์กฐ์ž‘(Tensor Manipulation)**: ์ฐจ์›์„ ์ถ•์†Œํ•˜๋Š” [[squeeze]], ์ฐจ์›์„ ํ™•์žฅํ•˜๋Š” [[unsqueeze]], ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜๋Š” [[reshape]] ๊ธฐ๋ฒ•์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. * **Elementwise Operations**: ํ…์„œ ๊ฐ„์˜ ์—ฐ์‚ฐ(+, -, *, /, ==)์€ ๊ฐ ์š”์†Œ๋ณ„๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. * **Tensor Truthiness**: ๋‹ค์ค‘ ์š”์†Œ๋ฅผ ๊ฐ€์ง„ ํ…์„œ๋Š” Python ๋ฆฌ์ŠคํŠธ์™€ ๋‹ฌ๋ฆฌ ์ง์ ‘์ ์ธ Boolean ํ‰๊ฐ€๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ, [[all()]] ๋˜๋Š” [[any()]] ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ## ๐Ÿงฉ ์ถ”์ถœ๋œ ํŒจํ„ด (Extracted patterns) * **์ฐจ์› ๊ด€๋ฆฌ ์ „๋žต**: 1์˜ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ ์ฐจ์›์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜(Squeezing) ์‚ฝ์ž…ํ•˜๋Š”(Unsqueezing) ํŒจํ„ด์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. * **์Šฌ๋ผ์ด์‹ฑ ๊ด€๋ก€**: `None`์„ ์‚ฌ์šฉํ•œ ์ฐจ์› ์‚ฝ์ž…, `:`๋ฅผ ์‚ฌ์šฉํ•œ ์ „์ฒด ๋ฒ”์œ„ ์œ ์ง€, `...`(Ellipsis)๋ฅผ ์‚ฌ์šฉํ•œ ๋ฏธ์ง€์ • ์ฐจ์› ์ฒ˜๋ฆฌ ๋“ฑ์˜ ํ‘œ์ค€ํ™”๋œ ํ‘œ๊ธฐ๋ฒ•์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค Pol. * **์—ฐ์‚ฐ ์ œ์•ฝ ์กฐ๊ฑด**: ์ดํ•ญ ์—ฐ์‚ฐ ์‹œ ํ”ผ์—ฐ์‚ฐ์ž๋“ค์€ ๋™์ผํ•œ Shape์„ ๊ฐ–๊ฑฐ๋‚˜, ํ•˜๋‚˜๋Š” ์Šค์นผ๋ผ(Scalar)์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๊ทœ์น™์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ## ๐Ÿ“– ์„ธ๋ถ€ ๋‚ด์šฉ (Details) ### 1. Tensor์˜ ๊ตฌ์กฐ์™€ ComfyUI์—์„œ์˜ ํ™œ์šฉ * **๊ธฐ๋ณธ ์ •์˜**: [[torch.Tensor]]๋Š” ๋ฒกํ„ฐ๋‚˜ ํ–‰๋ ฌ์„ ์ž„์˜์˜ ์ฐจ์›์œผ๋กœ ์ผ๋ฐ˜ํ™”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. * **Rank**: ํ…์„œ๊ฐ€ ๊ฐ€์ง„ ์ฐจ์›์˜ ์ˆ˜ (์˜ˆ: ๋ฒกํ„ฐ๋Š” Rank 1, ํ–‰๋ ฌ์€ Rank 2). * **Shape**: ๊ฐ ์ฐจ์›์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. * **ComfyUI ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ**: * RGB ์ด๋ฏธ์ง€๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ `[H, W, 3]` ํ˜•ํƒœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋‚˜, ComfyUI์—์„œ๋Š” ๋ฐฐ์น˜(Batch) ์ฐจ์›์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. * ์ตœ์ข… ํ˜•ํƒœ: `[B, H, W, C]` (B: Batch, H: Height, W: Width, C: Channels). ### 2. ์ฐจ์› ์กฐ์ž‘ ๋ฐ ๋ณ€ํ˜• * **Squeezing**: ํฌ๊ธฐ๊ฐ€ 1์ธ ์ฐจ์›(collapsed dimension)์„ ์ œ๊ฑฐํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. * **Unsqueezing**: ์ƒˆ๋กœ์šด ์ฐจ์›์„ ์‚ฝ์ž…ํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. * **Reshaping**: ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ ๋‹ค๋ฅธ ํ˜•ํƒœ๋กœ ์žฌํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ํ•˜๋ถ€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ### 3. ์ฃผ์š” ํ‘œ๊ธฐ๋ฒ• (Important Notation) * **`.shape` ์†์„ฑ**: `torch.Size`๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ์ด๋Š” ํŠœํ”Œ(tuple)์˜ ์„œ๋ธŒํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. * **์Šฌ๋ผ์ด์‹ฑ ๋„๊ตฌ**: * `None`: ์Šฌ๋ผ์ด์Šค ๋‚ด์—์„œ ํฌ๊ธฐ๊ฐ€ 1์ธ ์ฐจ์›์„ ์‚ฝ์ž…ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. * `:`: ํ•ด๋‹น ์ฐจ์›์˜ ์ „์ฒด ๋ฒ”์œ„๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. * `...` (Ellipsis): ์ง€์ •๋˜์ง€ ์•Š์€ ๋‚˜๋จธ์ง€ ๋ชจ๋“  ์ฐจ์›์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. * **`-1` ํŒŒ๋ผ๋ฏธํ„ฐ**: Shape์„ ์ „๋‹ฌ๋ฐ›๋Š” ๋ฉ”์„œ๋“œ์—์„œ, ์ „์ฒด ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด๋‹น ์ฐจ์›์˜ ํฌ๊ธฐ๋ฅผ ์ž๋™ ๊ณ„์‚ฐํ•˜๋„๋ก ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ### 4. ์—ฐ์‚ฐ ๋ฐ ๋…ผ๋ฆฌ๊ฐ’ (Operations & Truthiness) * **Elementwise Operations**: `+`, `-`, `*`, `/`, `==` ๋“ฑ์˜ ์—ฐ์‚ฐ์€ ์š”์†Œ๋ณ„๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ๋‹จ, ํ”ผ์—ฐ์‚ฐ์ž์˜ Shape์ด ๋™์ผํ•˜๊ฑฐ๋‚˜ ํ•˜๋‚˜๊ฐ€ ์Šค์นผ๋ผ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. * **Truthiness (๋…ผ๋ฆฌ๊ฐ’ ํŒ๋‹จ)**: * ๋‹ค์ค‘ ์š”์†Œ๋ฅผ ๊ฐ€์ง„ ํ…์„œ๋Š” Python์˜ ๊ธฐ๋ณธ Boolean ํ‰๊ฐ€ ์‹œ `RuntimeError`๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค(Ambiguous ์˜ค๋ฅ˜). * ๋”ฐ๋ผ์„œ ์š”์†Œ ์ „์ฒด์˜ ๋…ผ๋ฆฌ๊ฐ’์„ ํ™•์ธํ•˜๋ ค๋ฉด `.all()` ๋˜๋Š” `.any()`๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ## โš–๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & updates) * **์ฃผ์˜์‚ฌํ•ญ**: ์ผ๋ถ€ ์ปค์Šคํ…€ ๋…ธ๋“œ ์ž‘์„ฑ์ž๊ฐ€ ์ฐจ์›์ด ์ถ•์†Œ๋œ(squeezed) ํ…์„œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ๋ฒ„๊ทธ์˜ ์ฃผ์š” ์›์ธ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ## ๐Ÿ› ๏ธ ์ ์šฉ ์‚ฌ๋ก€ (Applied in summary) * **์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ**: `[B, H, W, 3]` ํ˜•ํƒœ์˜ ํ…์„œ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์น˜ ๋‹จ์œ„๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. * **์ฝ”๋“œ ์˜ˆ์‹œ**: * `a = torch.Tensor((1,2))` $\rightarrow$ `a.shape` ๊ฒฐ๊ณผ: `torch.Size([2])` (๋ณธ๋ฌธ ๋‚ด ์˜ˆ์‹œ ๊ธฐ์ค€) * `a[:, None].shape` $\rightarrow$ ์ฐจ์› ํ™•์žฅ ์‚ฌ๋ก€. * `a.reshape((1, -1))` $\rightarrow$ ์ž๋™ ํฌ๊ธฐ ๊ณ„์‚ฐ ํ™œ์šฉ ์‚ฌ๋ก€. ## โœ… ๊ฒ€์ฆ ์ƒํƒœ ๋ฐ ์‹ ๋ขฐ๋„ - **์ƒํƒœ:** draft - **๊ฒ€์ฆ ๋‹จ๊ณ„:** conceptual - **์ถœ์ฒ˜ ์‹ ๋ขฐ๋„:** B (Primary Source โ€” ์›น์‚ฌ์ดํŠธ ๋ณธ๋ฌธ ์ง์ ‘ ์ถ”์ถœ) - **์ค‘๋ณต ๊ฒ€์‚ฌ ๊ฒฐ๊ณผ:** ์‹ ๊ทœ ์ƒ์„ฑ (New discovery) ## ๐Ÿ”— ๊ด€๋ จ ๋ฌธ์„œ ๋งํฌ (Related document links) * [[pytorch]]: ComfyUI์˜ ํ•ต์‹ฌ ์ˆ˜์น˜ ์—ฐ์‚ฐ์„ ๋‹ด๋‹นํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. * [[torch.Tensor]]: ์ด๋ฏธ์ง€, Latent, Mask๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. * [[squeeze]], [[unsqueeze]], [[reshape]]: ํ…์„œ์˜ ์ฐจ์›์„ ์ œ์–ดํ•˜๋Š” ์ฃผ์š” ๊ธฐ๋ฒ•๋“ค์ž…๋‹ˆ๋‹ค. * [[all()]] / [[any()]]: ํ…์„œ์˜ ๋…ผ๋ฆฌ์  ์ฐธ/๊ฑฐ์ง“์„ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. ## ๐Ÿ“ ๋ณ€๊ฒฝ ์ด๋ ฅ (Change history) - 2026-05-20: Astra /wikify ๋กœ https://docs.comfy.org/custom-nodes/backend/tensors ๋ณธ๋ฌธ์—์„œ ์ดˆ์•ˆ ์ƒ์„ฑ.