arogozhnikov/einops
Flexible and powerful tensor operations for readable and reliable code (for pytorch, jax, TF and others)
해결하는 문제
einops는 유연하고 강력한 텐서 연산을 제공하여 코드의 가독성, 신뢰성, 프레임워크 독립성을 높입니다. 복잡하고 종종 혼란스러운 리셰이프, 전치, 축소를, 연산의 의미 (무엇을 하는지)를 명확히 표현하는 의미 있는 표기법으로 대체합니다.
작동 방식
이 라이브러리는 아인슈타인에 영감을 받은 표기법을 사용하여 텐서 변환을 설명합니다. .view() 또는 .reshape()와 같은 프레임워크 고유의 함수 대신, 패턴 문자열(예: 'b c h w -> b (c h w)')을 지정하여 요소를 재배치, 축소, 반복할 수 있습니다.
핵심 기능은 다음과 같습니다:
- Rearrange: 패턴에 따라 요소의 레이아웃을 변경합니다.
- Reduce: 재배치와 축소(예: 'mean' 또는 'max' 사용)를 하나의 단계로 통합합니다.
- Repeat: 새로운 축을 따라 요소를 복사합니다.
- Pack/Unpack: 여러 텐서를 하나로 역전이 가능하게 패킹하는 기능으로, 다양한 차원을 다루는 데 유용합니다.
- Einsum: 다중 문자 이름을 지원하는 유연한 내적 연산입니다.
또한 PyTorch, TensorFlow, Jax 등 프레임워크별 레이어를 제공하여 모델 아키텍처에 직접 통합할 수 있습니다.
대상 사용자
PyTorch, TensorFlow, JAX, MLX, NumPy 등의 딥러닝 프레임워크를 사용하여 다차원 텐서를 자주 조작하고, 버그를 피하며 코드 유지보수성을 높이고자 하는 연구자 및 개발자.
주요 특징
- 의미적 명확성: 패턴은 입력 및 출력 형태를 설명하여 텐서의 의미에 대한 내장 문서를 제공합니다.
- 프레임워크 독립성: NumPy, PyTorch, TensorFlow, JAX, MLX 및 Python 배열 API 표준을 지원하는 모든 프레임워크에서 일관되게 작동합니다.
- 일관성: 1D, 2D, 3D 풀링 또는 공간에서 깊이로의 변환과 같은 복잡한 연산을 일관된 방식으로 처리할 수 있습니다.
- 신뢰성 있는 검사: 패턴에 특정 차원을 지정하면 입력 텐서의 형태를 자동으로 검증할 수 있습니다.
- 인용: 본 프로젝트에 대한 ICLR 2022 Oral 발표 논문이 제공됩니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트