Files
2nd/10_Wiki/Comfyui/위키 Working with torch.Tensor - ComfyUI 2026-05-20.md
T
koriweb a3f63e56e2 Add ComfyUI wikified docs and youtube extracts; tidy raw→Topics
- 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>
2026-05-20 18:41:10 +09:00

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
web
wikify
https://docs.comfy.org/custom-nodes/backend/tensors

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)
  • pytorch: ComfyUI의 핵심 수치 연산을 담당하는 라이브러리입니다.
  • torch.Tensor: 이미지, Latent, Mask를 표현하는 기본 데이터 구조입니다.
  • squeeze, unsqueeze, reshape: 텐서의 차원을 제어하는 주요 기법들입니다.
  • all() / any(): 텐서의 논리적 참/거짓을 판별하기 위해 필요한 메서드입니다.

📝 변경 이력 (Change history)