PyTorch의 Tensor를 사용한 기본 작업

Pytorchui Tensorleul Sayonghan Gibon Jag Eob



Tensors는 딥 러닝의 수치 계산을 위한 강력하고 유연한 데이터 구조를 제공하는 PyTorch의 초석입니다. NumPy 배열과 마찬가지로 다차원 배열을 나타내지만 딥 러닝 작업을 위해 특별히 설계된 추가 기능과 최적화가 포함되어 있습니다. 텐서는 PyTorch에서 수치 데이터를 저장하고 조작하기 위한 기본 개체이므로 스칼라(0차원 텐서)부터 벡터(1차원 텐서), 행렬(2차원 텐서) 및 그 이상에 이르기까지 다양한 차원을 가질 수 있습니다. -차원 텐서.

텐서의 가장 큰 장점 중 하나는 효율적인 수학 연산을 수행하는 능력입니다. 텐서는 덧셈, 뺄셈, 곱셈, 나눗셈과 같은 요소별 연산과 행렬 곱셈 및 전치와 같은 행렬 연산을 포함하여 광범위한 산술 연산을 지원합니다.

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의 데이터 표현 및 조작을 위한 기반 역할을 하며, 이를 통해 이 다용도 머신러닝 프레임워크의 모든 기능을 최대한 활용할 수 있습니다.