>기술 주변기기 >일체 포함 >다차원 텐서와 선형 레이어 간의 상호 작용 원리는 무엇입니까?

다차원 텐서와 선형 레이어 간의 상호 작용 원리는 무엇입니까?

WBOY
WBOY앞으로
2024-01-22 23:21:15980검색

다차원 텐서와 선형 레이어 간의 상호 작용 원리는 무엇입니까?

선형 레이어는 딥러닝에서 가장 일반적으로 사용되는 레이어 중 하나이며 신경망에서 중요한 역할을 합니다. 이미지 분류, 객체 감지, 음성 인식 등의 작업에 널리 사용됩니다. 이 문서에서는 다차원 텐서에서 선형 레이어의 역할에 중점을 둘 것입니다.

먼저 선형 레이어의 기본 원리를 살펴보겠습니다. 입력 텐서의 경우 모양은 (n_out,)입니다. n_in은 입력 텐서의 크기를 나타내고, n_out은 출력 텐서의 크기를 나타냅니다. 입력 텐서가 1차원 텐서 x∈R^n_in이고 출력 텐서 역시 1차원 텐서 y∈R^n_out이라고 가정합니다. 선형 레이어에서 입력 텐서는 가중치 행렬 W와 바이어스 벡터 b를 더해 선형 변환되어 출력 텐서 y를 얻습니다. 이 선형 변환은 y = Wx + b로 표현될 수 있습니다. 이 중 W의 각 행은 선형 레이어의 출력 뉴런의 가중치 벡터를 나타내고, b의 각 요소는 해당 출력 뉴런의 바이어스 값을 나타냅니다. 최종 출력 텐서 y의 각 요소는 해당 출력 뉴런의 가중치 벡터와 입력 텐서에 해당 오프셋 값을 더해 내적을 수행하여 얻습니다.

이제 모양이 (n_1,n_2,…,n_k)인 다차원 텐서 X가 있다고 가정합니다. (m_1,m_2,…,m_l) 모양의 출력 텐서 Y를 생성하려면 이를 선형 레이어에 전달해야 합니다. 이때 우리는 어떻게 해야 합니까?

먼저 X를 1차원 텐서로 평면화해야 합니다. 이 프로세스는 종종 "레벨링" 작업이라고 불리며 PyTorch의 보기 기능을 사용하여 구현할 수 있습니다. 구체적으로 X의 모양을 (n_1times n_2times...times n_k,)로 변경할 수 있습니다. 즉, 모든 차원의 요소를 하나의 열에 배열할 수 있습니다. 이러한 방식으로 우리는 크기가 n_{in}=n_1times n_2times...times n_k인 1차원 텐서 x를 얻습니다.

다음으로 x를 선형 레이어에 전달하고 출력 텐서 y를 얻을 수 있습니다. 구체적으로 선형 레이어의 계산식을 사용할 수 있습니다.

y=Wx+b

여기서 W의 모양은 (m_{out},n_{in})이고 b의 모양은 (m_{out},)이고, m_{out}은 출력 텐서의 크기를 나타냅니다. 곱셈 Wx의 결과는 모양이 (m_{out},)인 1차원 텐서입니다. 오프셋 b를 추가하면 모양이 (m_{out},)인 출력 텐서 y가 얻어집니다.

마지막으로 y를 다차원 텐서의 형태로 다시 변환해야 합니다. 구체적으로, PyTorch의 뷰 기능을 사용하여 y의 모양을 (m_1, m_2,...,m_l)로 변경할 수 있습니다. 이런 방식으로 최종 출력 텐서 Y를 얻습니다.

다차원 텐서를 1차원 텐서로 평면화할 때 텐서의 요소 순서가 변경되지 않도록 해야 한다는 점에 유의해야 합니다. 예를 들어 (2,3) 모양의 2차원 텐서 X가 있다고 가정합니다.

view(-1)을 사용하여 구현하면 결과는 다음과 같습니다.

x=[1,2,3,4,5,6]

여기서 (1,2) 및 ( 4,5) 이 두 행의 요소가 함께 배열되어 순서가 변경됩니다. 따라서 올바른 작업은 view(-1)을 사용하여 텐서를 평면화한 다음 view(1,-1)을 사용하여 다시 원래 모양으로 변환하는 것입니다.

x=begin{bmatrix}1&2&3&4&5&6end{ b매트릭스 }

다차원 텐서에서 선형 레이어의 역할은 각 샘플에 대한 독립적인 선형 변환으로 볼 수 있다는 점에 유의해야 합니다. 예를 들어 (N, C, H, W) 모양의 4차원 텐서 X가 있다고 가정합니다. 여기서 N은 샘플 수, C는 채널 수, H와 W는 각각 높이와 너비를 나타냅니다. 우리는 확장할 수 있습니다 선형 레이어는 각 샘플에 대해 독립적인 선형 변환을 수행하여 (N, m_{out}) 모양의 출력 텐서 Y를 얻습니다. 마지막으로 첫 번째 차원을 따라 Y를 원래 모양(N,m_1,m_2,…,m_l)으로 복원할 수 있습니다.

간단히 말하면 다차원 텐서에서 선형 레이어의 역할은 각 샘플에 대한 독립적인 선형 변환으로 볼 수 있습니다. 실제 적용에서는 일반적으로 다차원 텐서를 1차원 텐서로 평면화하고 이를 선형 레이어에 전달합니다. 병합 작업에서는 요소의 순서가 변경되지 않도록 해야 합니다. 그렇지 않으면 잘못된 계산 결과가 발생합니다. 마지막으로, 다음 계산 단계를 위해 출력 텐서를 원래 모양으로 복원해야 합니다.

위 내용은 다차원 텐서와 선형 레이어 간의 상호 작용 원리는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 163.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제