0
respostas

[Projeto] manipulação de tensores

============================================================

EXEMPLO: somando dois tensores com dimensões diferentes

Objetivo:

- Criar tns1 com shape (7, 7, 3)

- Criar tns2 com shape (147, 1)

- Modificar apenas tns1 para tornar a soma possível

============================================================

1) Importa a biblioteca PyTorch

import torch

2) Cria o primeiro tensor aleatório com 3 dimensões:

7 linhas, 7 colunas, 3 canais

tns1 = torch.randn(7, 7, 3)

3) Cria o segundo tensor aleatório com 147 linhas e 1 coluna

tns2 = torch.randn(147, 1)

4) Mostra os shapes originais para conferência

print("Shape original de tns1:", tns1.shape) # esperado: torch.Size([7, 7, 3])
print("Shape original de tns2:", tns2.shape) # esperado: torch.Size([147, 1])

------------------------------------------------------------

5) Entendendo o problema:

tns1 tem shape (7, 7, 3)

tns2 tem shape (147, 1)

Não dá para somar diretamente porque os shapes não batem.

Mas tns1 possui 7 * 7 * 3 = 147 elementos no total.

Então podemos "achatar" tns1 e reorganizá-lo em (147, 1),

ficando compatível com tns2.

------------------------------------------------------------

6) Reorganiza tns1 usando view(-1, 1)

-1 diz ao PyTorch: "calcule automaticamente essa dimensão"

Como o total de elementos é 147, o resultado será (147, 1)

tns1 = tns1.view(-1, 1)

7) Mostra o novo shape de tns1

print("Novo shape de tns1:", tns1.shape) # esperado: torch.Size([147, 1])

8) Agora a soma é possível, porque ambos têm shape (147, 1)

soma = tns1 + tns2

9) Mostra o shape do resultado

print("Shape da soma:", soma.shape) # esperado: torch.Size([147, 1])

10) Exibe os primeiros elementos para visualizar o resultado

print("\nPrimeiros 5 valores de tns1:")
print(tns1[:5])

print("\nPrimeiros 5 valores de tns2:")
print(tns2[:5])

print("\nPrimeiros 5 valores da soma:")
print(soma[:5])