Operações Matriciais em Python com a Função Dot() do NumPy
Dominar as operações matriciais com NumPy é essencial para trabalhar com algoritmos de Machine Learning e IA. Neste post, exploraremos a função numpy.dot().

Receba nossa newsletter

NumPy dot()

numpy dot

Álgebra linear é um ramo da matemática essencial em inteligência artificial e machine learning. Ela lida com vetores, matrizes, tensores e operações sobre essas entidades. Em algoritmos de machine learning, arranjos (incluindo vetores, matrizes e tensores) são usados para representar dados que podem ser manipulados usando operações de álgebra linear. Neste post, abordaremos uma das ferramentas mais poderosas para trabalhar com arranjos disponíveis em nosso kit de ferramentas Python: a função dot() do NumPy.

A função dot() do NumPy

NumPy é uma biblioteca Python que oferece suporte para grandes arrays (arranjos) e matrizes multidimensionais, juntamente com uma ampla gama de funções matemáticas de alto desempenho. Uma dessas funções é a numpy.dot().

A função numpy.dot() calcula o produto escalar entre duas entradas. Elas podem ser escalares, vetores (arrays 1D) ou matrizes/arrays de dimensão superior.

A sintaxe básica da função numpy.dot() é:

				
					numpy.dot(a, b, out=None)
				
			

onde:

a e b são dois arrays de entrada. Eles devem ter dimensões compatíveis para multiplicação matricial.

out (opcional): array para armazenar o resultado em vez de criar um novo.

Exemplos de np.dot() em código

Para valores escalares, a função numpy.dot() retorna o produto a × b.

				
					import numpy as np

a = 2
b = 5
c = np.dot(a, b)

print(c) # resultado: 10
				
			

Para arrays 1D, ela retorna o produto interno (escalar), ou seja, a soma dos produtos elemento a elemento. O resultado é um único escalar.

				
					import numpy as np

a = np.array([1, 2])
b = np.array([3, 4])
c = np.dot(a, b)

print(c) # resultado: 11
				
			

Para arrays 2D, np.dot() é equivalente à multiplicação matricial:

				
					import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = np.dot(A, B)

print(C) 
# resultado: 
# [[19 22]
#  [43 50]]

				
			

Lembre-se: as matrizes A e B devem ter dimensões compatíveis para multiplicação matricial. Ou seja, o número de colunas na primeira matriz (array 2D) precisa ser igual ao número de linhas na segunda. No exemplo abaixo, as dimensões incompatíveis geram um erro (dimensões (3, 2) e (3, 2)):

				
					import numpy as np

A = np.array([[1, 2], [3, 4], [5, 6]])
B = np.array([[7, 8], [9, 10], [11, 12]])
C = np.dot(A, B)

print(C) 
# resultado: 
# ValueError: shapes (3,2) and (3,2) not aligned: 2 (dim 1) != 3 (dim 0)


				
			

NumPy dot() para arrays 3D e de dimensões maiores

Para arranjos 3D e de dimensões maiores, a função dot() faz uma soma sobre o último eixo do primeiro array e o penúltimo eixo do segundo array. Ou seja, o np.dot() contrai o último eixo do primeiro array e o penúltimo eixo do segundo array (o eixo -1 de A e o eixo -2 de B):

				
					import numpy as np

A = np.random.rand(10, 4, 7)   # formato (10, 4, 7)
B = np.random.rand(7, 6)       # formato (7, 6)

C = np.dot(A, B)
print(C.shape)
# resultado: (10, 4, 6)

				
			

Veja que, para arranjos de dimensões maiores, a dimensão do último eixo do primeiro array precisa ser compatível com a dimensão do penúltimo eixo do segundo array.

NumPy.dot() com Transmissão

Como já vimos, a transmissão NumPy é um recurso que permite operações aritméticas em arrays de diferentes formatos. Ela expande automaticamente o array menor para corresponder ao maior para realizar operações eficientes elemento a elemento sem precisar criar cópias desnecessárias dos dados. A função dot() realiza a transmissão automaticamente quando os formatos de arrays diferentes são compatíveis: 
				
					A = np.array([[1, 2, 3], [4, 5, 6]]) # matriz (2, 3)
b = np.array([7, 8, 9]) # vetor (3,)
C = np.dot(A, b)

print(C) 
# resultado: 
# [ 50 122]



				
			
Neste exemplo, o produto escalar é realizado entre um array 2D A (formato (2, 3)) e um array 1D b (formato (3,)). A transmissão ocorre aplicando o array 1D b em cada linha de A. Para isso, o número de colunas na primeira matriz (array 2D) precisa ser igual ao número de linhas do vetor do exemplo (3). 

Imagem com IA Generativa – Dia 690

IA generativa - img690

Arte com IA generativa: imagem do dia

Todos os dias postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial