a3f63e56e2
- 10_Wiki/Comfyui/: ComfyUI docs generated via /wikify - 00_Raw/_youtube/: /youtube extraction outputs - Move some 00_Raw originals into 10_Wiki/Topics_meeting; remove empty canvases and stray files Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
5.6 KiB
5.6 KiB
id, title, category, status, verification_status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, created_at, updated_at, review_reason, merge_history, tags, raw_sources, applied_in, github_commit
| id | title | category | status | verification_status | canonical_id | aliases | duplicate_of | source_trust_level | confidence_score | created_at | updated_at | review_reason | merge_history | tags | raw_sources | applied_in | github_commit | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| working-with-torchtensor---comfyui | Working with torch.Tensor - ComfyUI | 10_Wiki/Topics | draft | conceptual | B | 0.8 | 2026-05-20 | 2026-05-20 |
|
|
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).
- RGB 이미지는 기본적으로
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()를 명시적으로 사용해야 합니다.
- 다중 요소를 가진 텐서는 Python의 기본 Boolean 평가 시
⚖️ 모순 및 업데이트 (Contradictions & updates)
- 주의사항: 일부 커스텀 노드 작성자가 차원이 축소된(squeezed) 텐서를 반환하는 경우가 있으며, 이는 버그의 주요 원인이 될 수 있습니다.
🛠️ 적용 사례 (Applied in summary)
- 이미지 처리:
[B, H, W, 3]형태의 텐서 구조를 사용하여 배치 단위로 이미지를 처리합니다. - 코드 예시:
a = torch.Tensor((1,2))\rightarrowa.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 본문에서 초안 생성.