텐서의 가장 큰 장점 중 하나는 효율적인 수학 연산을 수행하는 능력입니다. 텐서는 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 요소별 연산과 행렬 곱셈 및 전치와 같은 행렬 연산을 포함하여 광범위한 산술 연산을 지원합니다.
PyTorch는 텐서 조작을 위한 포괄적인 기능 및 방법 세트를 제공합니다. 여기에는 텐서 재구성, 특정 요소 또는 하위 텐서 추출, 지정된 차원에 따라 텐서 연결 또는 분할을 위한 작업이 포함됩니다. 또한 PyTorch는 다양한 모양과 크기의 텐서 작업을 더 쉽게 해주는 텐서 인덱싱, 슬라이싱 및 브로드캐스팅 기능을 제공합니다.
이 기사에서는 PyTorch에서 텐서를 사용하는 기본 작업을 배우고, 텐서를 생성하고, 기본 작업을 수행하고, 모양을 조작하고, CPU와 GPU 간에 이동하는 방법을 살펴봅니다.
텐서 생성
PyTorch의 Tensor는 여러 가지 방법으로 생성할 수 있습니다. 몇 가지 일반적인 방법을 살펴보겠습니다.
텐서를 생성하려면 'torch.Tensor' 클래스나 'torch.tensor' 함수를 사용할 수 있습니다. 몇 가지 예를 살펴보겠습니다.
수입 토치
# 생성 1 - Python 목록의 차원 텐서
텐서_1d = 토치. 텐서 ( [ 1 , 2 , 삼 , 4 , 5 ] )
인쇄 ( 텐서_1d )
# 생성 2 - 중첩된 Python 목록의 차원 텐서
텐서_2d = 토치. 텐서 ( [ [ 1 , 2 , 삼 ] , [ 4 , 5 , 6 ] ] )
인쇄 ( 텐서_2d )
# 특정 형태의 0으로 구성된 텐서를 생성합니다.
zeros_tensor = 토치. 0 ( 삼 , 2 )
인쇄 ( zeros_tensor )
# 특정 모양을 가진 텐서를 만듭니다.
one_tensor = 토치. 것들 ( 2 , 삼 )
인쇄 ( one_tensor )
# 균일 분포에서 임의의 값을 갖는 텐서를 생성합니다.
무작위_텐서 = 토치. 랜드 ( 2 , 2 )
인쇄 ( 무작위_텐서 )
주어진 예에서는 다양한 모양의 텐서를 생성하고 특정 숫자, 0, 1 또는 임의의 값과 같은 다양한 값으로 초기화합니다. 이전 코드 조각을 실행하면 비슷한 출력이 표시됩니다.
텐서 작업
텐서가 있으면 요소별 산술 연산, 행렬 연산 등과 같은 다양한 연산을 수행할 수 있습니다.
요소별 산술 연산
요소별 산술 연산을 통해 요소별로 텐서 간의 계산을 수행할 수 있습니다. 연산에 포함된 텐서는 동일한 모양을 가져야 합니다.
여기 몇 가지 예가 있어요.
수입 토치# 텐서 생성
텐서1 = 토치. 텐서 ( [ 1 , 2 , 삼 ] )
텐서2 = 토치. 텐서 ( [ 4 , 5 , 6 ] )
# 덧셈
덧셈 = 텐서1 + 텐서2
인쇄 ( '덧셈:' , 덧셈 )
# 빼기
빼기 = 텐서1 - 텐서2
인쇄 ( '빼기:' , 빼기 )
# 곱셈
곱셈 = 텐서1 * 텐서2
인쇄 ( '곱셈:' , 곱셈 )
# 분할
분할 = 텐서1 / 텐서2
인쇄 ( '분할:' , 분할 )
주어진 코드에서 우리는 두 텐서 사이에 더하기, 빼기, 곱하기, 나누기 연산을 수행하여 계산된 값을 가진 새로운 텐서를 생성합니다. 코드 조각의 결과는 다음과 같습니다.
매트릭스 연산
PyTorch는 행렬 곱셈 및 전치와 같은 텐서에 대한 효율적인 행렬 연산을 제공합니다. 이러한 연산은 선형 대수학 및 신경망 계산과 같은 작업에 특히 유용합니다.
수입 토치# 텐서 생성
텐서1 = 토치. 텐서 ( [ [ 1 , 2 ] , [ 삼 , 4 ] ] )
텐서2 = 토치. 텐서 ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )
# 행렬 곱셈
매트릭스_제품 = 토치. 매트 ( 텐서1 , 텐서2 )
인쇄 ( '매트릭스 제품:' , 매트릭스_제품 )
# 행렬 전치
행렬_전치 = 텐서1. 티
인쇄 ( '행렬 전치:' , 행렬_전치 )
주어진 예에서는 'torch.matmul' 함수를 사용하여 행렬 곱셈을 수행하고 '.T' 속성을 사용하여 행렬의 전치를 얻습니다.
텐서 모양 조작
텐서에 대한 작업을 수행하는 것 외에도 특정 요구 사항에 맞게 모양을 조작해야 하는 경우가 많습니다. PyTorch는 텐서의 모양을 변경하는 여러 기능을 제공합니다. 다음 기능 중 일부를 살펴보겠습니다.
수입 토치# 텐서 생성
텐서 = 토치. 텐서 ( [ [ 1 , 2 , 삼 ] , [ 4 , 5 , 6 ] ] )
# 텐서의 모양을 변경합니다
reshape_텐서 = 텐서. 모양을 바꾸다 ( 삼 , 2 )
인쇄 ( '재형화된 텐서:' , reshape_텐서 )
# 텐서의 크기를 구합니다
크기 = 텐서. 크기 ( )
인쇄 ( '텐서의 크기:' , 크기 )
# 요소의 개수를 구합니다 ~에 텐서
num_elements = 텐서. 이름을 지어주다 ( )
인쇄 ( '요소 수:' , num_elements )
제공된 코드에서는 reshape 함수를 사용하여 텐서의 형태를 변경하고, size 메소드를 사용하여 텐서의 크기를 검색하고, numel 메소드를 사용하여 텐서의 전체 요소 수를 얻습니다.
CPU와 GPU 간 텐서 이동
PyTorch는 그래픽 카드에서 계산을 수행할 수 있는 GPU 가속을 지원하므로 훈련 시간을 줄여 딥 러닝 작업 속도를 크게 높일 수 있습니다. 'to' 메소드를 사용하여 CPU와 GPU 간에 텐서를 이동할 수 있습니다.
메모 : 이 작업은 컴퓨터에 CUDA가 포함된 NVIDIA GPU가 있는 경우에만 수행할 수 있습니다.
수입 토치# CPU에 텐서를 생성합니다.
텐서_cpu = 토치. 텐서 ( [ 1 , 2 , 삼 ] )
# 확인하다 만약에 GPU 사용 가능
만약에 토치. 다른 . 사용할 수 있습니다 ( ) :
# 텐서를 GPU로 이동
텐서_gpu = 텐서_cpu. 에게 ( '다른' )
인쇄 ( 'GPU의 텐서:' , 텐서_gpu )
또 다른 :
인쇄 ( 'GPU를 사용할 수 없습니다.' )
제공된 코드에서 torch.cuda.is_available()을 사용하여 GPU를 사용할 수 있는지 확인합니다. GPU를 사용할 수 있는 경우 'cuda' 인수와 함께 'to' 메서드를 사용하여 텐서를 CPU에서 GPU로 이동합니다.
결론
PyTorch를 사용하고 딥 러닝 모델을 구축하려면 기본적인 텐서 작업을 이해하는 것이 중요합니다. 이 기사에서는 텐서를 생성하고, 기본 작업을 수행하고, 모양을 조작하고, CPU와 GPU 간에 이동하는 방법을 살펴보았습니다. 이러한 지식을 바탕으로 이제 PyTorch에서 텐서 작업을 시작하고, 계산을 수행하고, 정교한 딥 러닝 모델을 구축할 수 있습니다. Tensor는 PyTorch의 데이터 표현 및 조작을 위한 기반 역할을 하며, 이를 통해 이 다용도 머신러닝 프레임워크의 모든 기능을 최대한 활용할 수 있습니다.