---
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 본문에서 초안 생성.