머신러닝을 위한 Tensor에 대한 짧은 소개

딥 러닝에서는 Tensor를 기반이 되는 데이터 구조로 인식합니다.

Tensor는 구글의 주력 머신러닝 라이브러리인 ‘Tensor플로우(TensorFlow)’의 이름에도 등장합니다.

Tensor는 선형 대수학에서 사용되는 데이터 구조의 한 유형이며 벡터 및 행렬과 마찬가지로 Tensor를 사용하여 산술 연산을 계산할 수 있습니다.

이 튜토리얼에서는 Tensor가 무엇이며 NumPy를 사용하여 Python에서 Tensor를 조작하는 방법을 알아보겠습니다.

이 자습서를 완료하면 다음을 알 수 있습니다.

  • Tensor는 행렬의 일반화이며 n 차원 배열을 사용하여 표현됩니다.
  • Tensor를 사용하여 요소별 연산을 구현하는 방법.
  • Tensor 곱을 수행하는 방법.

튜토리얼 개요

이 튜토리얼은 다음과 같이 세 부분으로 나뉩니다.

  1. Tensor란?
  2. 파이썬의 Tensor
  3. 요소별 Tensor 연산
  4. Tensor 곱

Tensor란?

Tensor는 벡터와 행렬의 일반화이며 다차원 배열로 쉽게 이해할 수 있습니다.

일반적으로 다양한 수의 축을 가진 일반 그리드에 배열 된 숫자 배열을 Tensor라고합니다.

— 33페이지, 딥러닝, 2016.

벡터는 1차원 또는 1차 Tensor이고 행렬은 2차원 또는 2차 Tensor입니다.

Tensor 표기법은 Tensor를 나타내는 대문자와 Tensor 내의 스칼라 값을 나타내는 아래 첨자 정수가있는 소문자가있는 행렬 표기법과 매우 유사합니다.

스칼라, 벡터 및 행렬로 수행할 수 있는 많은 연산은 Tensor를 사용하여 수행하도록 재구성할 수 있습니다.

도구로서 Tensor와 Tensor 대수학은 물리학 및 공학 분야에서 널리 사용됩니다. 딥러닝 모델의 훈련 및 동작에 있어서 기계학습에 공지된 용어 및 기술의 집합은 Tensor의 관점에서 설명될 수 있다.


파이썬의 Tensor

벡터 및 행렬과 마찬가지로 Tensor는 N차원 배열(ndarray)을 사용하여 Python에서 나타낼 수 있습니다.

Tensor는 array()의 생성자에 인라인으로 목록 정의할 수 있습니다.

아래 예제에서는 3x3x3 Tensor를 NumPy 배열로 정의합니다. 3 차원은 헤드를 감싸는 것이 더 쉽습니다. 여기서는 먼저 행을 정의한 다음 열로 누적된 행 목록을 정의한 다음 큐브의 수준으로 누적된 열 목록을 정의합니다.

예제를 실행하면 먼저 Tensor의 모양이 인쇄된 다음 Tensor 자체의 값이 인쇄됩니다.

적어도 3차원에서는 Tensor가 각 레이어에 하나씩 일련의 행렬로 인쇄되는 것을 볼 수 있습니다. 이 3D Tensor의 경우 축 0은 레벨을 지정하고, 축 1은 행을 지정하고, 축 2는 열을 지정합니다.


요소별 Tensor 연산

행렬과 마찬가지로 Tensor 사이에서 요소별 산술을 수행할 수 있습니다.

이 섹션에서는 네 가지 주요 산술 연산을 살펴보겠습니다.

Tensor 추가

동일한 차원을 가진 두 개의 Tensor를 요소별로 추가하면 각 스칼라 값이 부모 Tensor에 있는 스칼라의 요소별 추가인 동일한 차원을 가진 새 Tensor가 생성됩니다.

NumPy에서는 배열을 추가하여 Tensor를 직접 추가 할 수 있습니다.

예제를 실행하면 두 부모 Tensor의 추가가 인쇄됩니다.


Tensor 빼기

동일한 차원을 가진 다른 Tensor에서 한 Tensor를 요소별로 빼면 동일한 차원을 가진 새 Tensor가 생성되며, 여기서 각 스칼라 값은 부모 Tensor에서 스칼라의 요소별 빼기입니다.

NumPy에서는 배열을 빼서 Tensor를 직접 뺄 수 있습니다.

예제를 실행하면 두 번째 Tensor에서 첫 번째 Tensor를 뺀 결과가 인쇄됩니다.


Tensor 하다마르 제품

동일한 차원을 가진 다른 Tensor에서 한 Tensor를 요소별로 곱하면 각 스칼라 값이 부모 Tensor에 있는 스칼라의 요소별 곱셈인 동일한 차원을 가진 새 Tensor가 생성됩니다.

행렬과 마찬가지로 이 연산은 Tensor 곱셈과 구별하기 위해 아다마르 곱이라고합니다. 여기서는 “o” 연산자를 사용하여 Tensor간의 아다마르 곱 연산을 나타냅니다.

NumPy에서는 배열을 곱하여 Tensor를 직접 곱할 수 있습니다.

예제를 실행하면 Tensor를 곱한 결과가 출력됩니다.


Tensor 부문

동일한 차원을 가진 다른 Tensor에서 한 Tensor를 요소별로 나누면 각 스칼라 값이 부모 Tensor에서 스칼라의 요소별 분할인 동일한 차원을 가진 새 Tensor가 생성됩니다.

NumPy에서는 배열을 나누어 Tensor를 직접 나눌 수 있습니다.

예제를 실행하면 Tensor를 분할한 결과가 인쇄됩니다.


Tensor 곱

Tensor 곱 연산자는 중간에 작은 x가 있는 원으로 표시되는 경우가 많습니다. 여기서는 “(x)”로 표시합니다.

q 차원을 갖는 Tensor A와 r 차원을 갖는 Tensor B가 주어지면, 이들 Tensor의 곱은 q + r 또는 다른 방식으로 q + r 차원의 순서를 갖는 새로운 Tensor가 될 것입니다.

Tensor 곱은 Tensor에 국한되지 않고 행렬과 벡터에서도 수행 할 수 있으며, 이는 더 높은 차원에 대한 직관을 개발하기 위해 연습하기에 좋은 장소가 될 수 있습니다.

벡터에 대한 Tensor 곱을 살펴보겠습니다.

또는 펼친 다음 항목:

행렬에 대한 Tensor 곱을 살펴보겠습니다.

또는 펼친 다음 항목:

Tensor 곱은 tensordot() 함수를 사용하여 NumPy에서 구현할 수 있습니다.

이 함수는 곱할 두 Tensor와 곱을 합산할 축(합계 감소라고 함)을 인수로 사용합니다. NumPy에서 Tensor 내적이라고도 하는 Tensor 곱을 계산하려면 축을 0으로 설정해야 합니다.

아래 예에서는 두 개의 order-1 Tensor(벡터)를 정의하고 Tensor 곱을 계산합니다.

예제를 실행하면 Tensor 곱의 결과가 출력됩니다.

결과는 길이가 2×2인 차수 2 Tensor(행렬)입니다.

Tensor 곱은 발생할 수 있는 가장 일반적인 형태의 Tensor 곱셈이지만 Tensor 내적 및 Tensor 수축과 같은 다른 유형의 Tensor 곱셈이 존재합니다.


확장

이 섹션에는 탐색할 수 있는 자습서를 확장하기 위한 몇 가지 아이디어가 나열되어 있습니다.

  • 자신의 작은 인위적인 Tensor 데이터를 사용하여 각 예제를 업데이트하십시오.
  • 이 튜토리얼에서 다루지 않은 세 가지 다른 유형의 Tensor 곱셈을 작은 벡터 또는 행렬 데이터로 구현합니다.
  • 각 Tensor 연산을 구현하는 자체 함수를 작성합니다.


추가 정보

이 섹션에서는 더 자세히 알아보려는 경우 주제에 대한 더 많은 리소스를 제공합니다.


API

기사


다른

요약

이 튜토리얼에서는 Tensor가 무엇이며 NumPy를 사용하여 Python에서 Tensor를 조작하는 방법을 발견했습니다.

특히 다음 내용을 배웠습니다.

  • Tensor는 행렬의 일반화이며 n 차원 배열을 사용하여 표현됩니다.
  • Tensor를 사용하여 요소별 연산을 구현하는 방법.
  • Tensor 곱을 수행하는 방법.

네피리티
No Comments

Sorry, the comment form is closed at this time.