PyTorch 실습 - 신경망 이미지 분류의 기초인 Tensor의 가장 완벽한 연산에 대한 자세한 설명(2)


머리말

PyTorch는 세 가지 주류 프레임워크 중 초보자가 배우기에 가장 적합하다고 할 수 있으며, 다른 주류 프레임워크에 비해 PyTorch의 단순성과 사용 편의성으로 인해 초보자가 가장 먼저 선택합니다. 제가 강조하고 싶은 점은 프레임워크를 프로그래밍 언어에 비유할 수 있는데, 프로그래밍 언어는 우리가 프로젝트 효과를 달성하기 위한 도구, 즉 자동차를 만들 때 사용하는 바퀴일 뿐입니다. 토치를 활용해 너무 신경쓰지 않고 기능을 구현하는 방법, 바퀴를 만드는 방법은 학습 시간이 너무 많이 걸립니다. 앞으로 딥러닝 프레임워크를 자세히 설명하는 일련의 기사가 나올 것이지만 학습을 시작하기 전에 딥러닝의 이론적 지식과 실제 작동에 더 익숙해지는 것은 나중의 일입니다. 이 단계에서는 이러한 도구를 사용하는 방법을 배우는 것입니다.

딥러닝의 내용은 익히기가 그리 쉽지 않으며, 수학적 이론 지식과 추론이 필요한 계산식 원리가 많이 포함되어 있습니다. 그리고 실제 작동 없이는 우리가 작성한 코드가 신경망 컴퓨팅 프레임워크에서 궁극적으로 어떤 역할을 나타내는지 이해하기 어렵습니다. 다만, 지식을 단순화하여 우리에게 보다 친숙한 내용으로 변환할 수 있도록 최선을 다해 모두가 신경망 프레임워크를 이해하고 익숙해질 수 있도록 최선을 다해 원활한 이해와 원활한 추론이 이루어지도록 노력하겠습니다. 너무 많은 수학적 공식과 전문적인 이론 지식을 사용하지 마십시오. 하나의 기사로 알고리즘을 빠르게 이해하고 구현하며, 가장 효율적인 방법으로 이 지식에 능숙해집니다.


블로거는 4년 동안 데이터 모델링에 전념해 왔으며 크고 작은 수십 개의 수학적 모델링에 참여했으며 다양한 모델의 원리와 각 모델의 모델링 프로세스, 다양한 문제 분석 방법을 이해하고 있습니다. 이 칼럼의 목적은 다양한 수학적 모델, 머신러닝, 딥러닝, 코드를 처음부터 빠르게 활용하는 것입니다. 각 기사에는 실용적인 프로젝트와 실행 가능한 코드가 포함되어 있습니다. 블로거는 다양한 디지털 및 아날로그 대회를 따라가고 있습니다. 각 디지털 및 아날로그 대회에 대해 블로거는 최신 아이디어와 코드를 이 칼럼에 작성하고 자세한 아이디어와 완전한 코드를 작성합니다. 도움이 필요한 친구들이 저자가 세심하게 작성한 칼럼을 놓치지 않았으면 좋겠습니다.
한 기사로 빠른 학습 - 수학적 모델링에서 일반적으로 사용되는 모델


이 글은 이전 글에 이어 따로 작성하기에는 내용이 너무 많습니다: PyTorch 실전 전투 - 신경망 이미지 분류의 기초인 Tensor의 가장 완벽한 연산에 대한 자세한 설명(1)_fanstuck의 블로그-CSDN 블로그

PyTorch 데이터 구조-Tensor

5. 텐서 수학 연산

먼저 작업 규칙을 관찰할 수 있도록 표시된 두 개의 Tensor를 만듭니다.

import torch

# 创建一个张量
tensor_a = torch.tensor([[1, 2], [3, 4]])
tensor_b = torch.tensor([[5, 6], [7, 8]])

1. 텐서의 덧셈과 뺄셈

# 张量的加法
tensor_sum = tensor_a + tensor_b
tensor_sum
텐서([[ 6, 8], 
        [10, 12]])
# 张量的减法
tensor_diff = tensor_a - tensor_b
tensor_diff

텐서([[-4, -4], 
        [-4, -4]])

그에 따라 행과 열이 추가되고 뺍니다.

2. 텐서의 곱셈과 나눗셈

# 张量的乘法
tensor_product = tensor_a * tensor_b
tensor_product
텐서([[ 5, 12], 
        [21, 32]])
# 张量的除法
tensor_div = tensor_a / tensor_b
tensor_div

텐서([[0.2000, 0.3333], 
        [0.4286, 0.5000]])

 행과 열은 곱셈과 나눗셈에 해당합니다.

3. 텐서의 제곱근

# 张量的平方
tensor_square = torch.square(tensor_a)
tensor_square

텐서([[ 1, 4], 
        [ 9, 16]])
# 张量的开方
tensor_sqrt = torch.sqrt(tensor_a)
tensor_sqrt

텐서([[1.0000, 1.4142], 
        [1.7321, 2.0000]])

  행과 열은 서로의 제곱근에 해당합니다.

4. 텐서의 지수 연산

# 张量的指数运算
tensor_exp = torch.exp(tensor_a)
tensor_exp

텐서([[ 2.7183, 7.3891], 
        [20.0855, 54.5981]])

 5. 텐서의 로그 연산

# 张量的对数运算
tensor_log = torch.log(tensor_a)
tensor_log

텐서([[0.0000, 0.6931], 
        [1.0986, 1.3863]])

 6. 텐서 요소를 요소별로 곱하기

# 张量逐元素相乘
tensor_mul=torch.mul(tensor_a, tensor_b)
tensor_mul

텐서([[ 5, 12], 
        [21, 32]])

곱셈과 동일합니다.

7.텐서 행렬 곱셈

#矩阵乘法
tensor_mm=torch.mm(tensor_a, tensor_b)
tensor_mm

텐서([[19, 22], 
        [43, 50]])

 6. 방송 원칙

PyTorch에서 텐서 연산을 수행할 때 두 텐서의 모양이 일치하지 않으면 PyTorch는 브로드캐스트를 통해 모양을 호환되도록 만들려고 합니다.

import torch

# 创建一个3x2的张量
tensor_a = torch.tensor([[1, 2], [3, 4], [5, 6]])

# 创建一个1x2的张量
tensor_b = torch.tensor([[10, 20]])

# 进行相加操作
result = tensor_a + tensor_b

# 输出结果
print(result)

 tensor_b의 모양이 의 모양 과 일치하면 PyTorch는 의 모양과 일치하도록 필요한 크기를 자동으로 복사한 (1, 2)다음 추가 작업을 수행합니다.tensor_a(3, 2)tensor_btensor_a

텐서([[11, 22], 
        [13, 24], 
        [15, 26]])

 7. 텐서 집계 작업

1. 합계

import torch

# 创建一个张量
tensor = torch.tensor([[1, 2], [3, 4], [5, 6]])

# 对所有元素求和
result_sum = torch.sum(tensor)
print(result_sum)

텐서(21)

2.평균

import torch

# 创建一个张量,数据类型为浮点数
tensor = torch.tensor([[1, 2], [3, 4], [5, 6]], dtype=torch.float32)

# 计算所有元素的平均值
result_mean = torch.mean(tensor)
print(result_mean)

텐서(3.5000)

 3. 최대값(Max)과 최소값(Min)

최대값:

import torch

# 创建一个张量
tensor = torch.tensor([[1, 2], [3, 4], [5, 6]])

# 找到所有元素中的最大值
result_max = torch.max(tensor)
print(result_max)

텐서(6)

최소값:

import torch

# 创建一个张量
tensor = torch.tensor([[1, 2], [3, 4], [5, 6]])

# 找到所有元素中的最小值
result_min = torch.min(tensor)
print(result_min)

텐서(1)

 4. 지정된 차원에 대한 집계 작업

import torch

# 创建一个张量
tensor = torch.tensor([[1, 2], [3, 4], [5, 6]])

# 沿着行的方向对列进行求和(第0维)
result_row_sum = torch.sum(tensor, dim=0)
print(result_row_sum)

텐서([ 9, 12])

 8. 매트릭스 연산

위에서 행렬 곱셈의 연산을 설명했으며, 다음은 행렬의 일반적인 연산에 대한 보다 포괄적인 소개입니다.

1.행렬 전치

import torch

# 创建一个矩阵
A = torch.tensor([[1, 2], [3, 4], [5, 6]])

# 矩阵转置
result = torch.transpose(A, 0, 1)
print(result)

 2. 역행렬 계산

import torch

# 创建一个可逆矩阵
A = torch.tensor([[1.0, 2.0], [3.0, 4.0]], dtype=torch.float32)

# 计算逆矩阵
result = torch.inverse(A)
print(result)

 

텐서([[-2.0000, 1.0000], 
        [ 1.5000, -0.5000]])

3. 매트릭스 추적 찾기

import torch

# 创建一个可逆矩阵
A = torch.tensor([[1.0, 2.0], [3.0, 4.0]], dtype=torch.float32)

# 计算逆矩阵
result = torch.inverse(A)
print(result)

 

텐서(5)

 따라서 여기서 배운 기본 Tensor 연산은 PyTorch를 사용하는 데 충분합니다. 다음으로 실제 프로젝트를 시작하기 전에 Variable을 배워야 합니다.

분실하지 않도록 주의하시고, 틀린 부분이 있으면 메시지 남겨주시면 조언 부탁드리겠습니다. 정말 감사합니다.

이번 문제는 이것이 전부입니다. 제 이름은 팬스턱입니다. 궁금한 점이 있으시면 편하게 토론 메시지를 남겨주세요. 다음 호에서 만나요.


추천

출처blog.csdn.net/master_hunter/article/details/132858669