Achoimre Einstein

Oibríochtaí Tensor i Python
Teicnící Achoimrithe Einstein
Samplaí Numpy agus Sreabhadh Teannasóra
Achoimre Einstein cover image

Is bealach gonta agus cumhachtach é nodaireacht Achoimre Einstein chun oibríochtaí teanntachta a léiriú, a úsáidtear go minic san fhisic agus san fhoghlaim meaisín. Ligeann sé dúinn ríomhaireachtaí casta a scríobh ar tensors i bhfoirm dhlúth. Clúdóimid na bunghnéithe ar shuimiú Einstein, conas é a úsáid i Python le Numpy agus Tensorflow, agus cuirfimid samplaí ar fáil chun a úsáid a léiriú.

Basics of Einstein Summation

Tá nodaireacht Achoimre Einstein (Einsum) bunaithe ar an smaoineamh go ndéanfaí achoimre ar innéacsanna arís agus arís eile i sloinn teanntachta. Tá sé bunaithe ar an dá riail seo a leanas:

1. Achoimriú thar innéacsanna arís agus arís eile: Má léirítear innéacs faoi dhó i dtéarma, déantar é a achoimriú

2. Innéacsanna saor in aisce: Is innéacsanna saora iad innéacsanna nach dtaispeántar ach uair amháin agus seasann siad d'aiseanna an teannastóra aschuir

Léireoimis é seo leis an sampla de dhá mhaitrís A agus B a iolrú: sainmhínítear an maitrís C mar thoradh air sin.

Cik=jAijBjkC_{ik} = \sum\limits_{j}^{}A_{ij}B_{jk}

I Python, soláthraíonn na leabharlanna Numpy agus Tensorflow araon feidhm einsum.

Numpy

import numpy as np

# Define two matrices A and B
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

# Perform matrix multiplication using einsum
C = np.einsum('ij,jk->ik', A, B)

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

Sa sampla thuas, is é ij,jk->ik an teaghrán einsum:

Is ionann ij agus innéacsanna mhaitrís A

Is ionann jk agus innéacsanna mhaitrís B

Sonraíonn ->ik innéacsanna na maitrís aschuir C

Tá suim na hoibríochta thar an innéacs j

Bheadh ​​cuma ar an gcód céanna i Tensorflow

import tensorflow as tf

# Define two matrices A and B
A = tf.constant([[1, 2], [3, 4]], dtype=tf.float32)
B = tf.constant([[5, 6], [7, 8]], dtype=tf.float32)

# Perform matrix multiplication using einsum
C = tf.einsum('ij,jk->ik', A, B)

print(C)
# tf.Tensor(
# [[19. 22.]
#  [43. 50.]], shape=(2, 2), dtype=float32)

Tuilleadh Samplaí

Táirge Laistigh de Veicteoirí

Sainmhínítear táirge inmheánach (táirge ponc) dhá veicteoir a agus b mar

c=iaibic = \sum\limits_{i}^{}a_{i}b_{i}

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

c = np.einsum('i,i->', a, b)

print(c)  # Output: 32

Táirge Seachtrach Veicteoirí

Tugtar an táirge seachtrach de dhá veicteoir a agus b ag:

Cij=aibjC_{ij} = a_{i}b_{j}

C = np.einsum('i,j->ij', a, b)

print(C)
# Output
# [[4 5 6]
#  [8 10 12]
#  [12 15 18]]

Maitrís a thrasuí

Is féidir trasuíomh maitrís A a fháil trína hinnéacsanna a mhalartú

A_transpose = np.einsum('ij->ji', A)

print(A_transpose)
# Output
# [[1. 3.]
#  [2. 4.]]

Rian Maitrís

Is é rian mhaitrís A suim a eilimintí trasnánacha:

Tr(A)=iAiiAiiTr(A) = \sum\limits_{i}^{}A_{ii}A_{ii}


trace = np.einsum('ii->', A)

print(trace)
# Output: 5.0

Iolrú Maitrís Baisc

Tá Einsum úsáideach go háirithe le haghaidh oibríochtaí baisc. Cuir i gcás go bhfuil baisc maitrísí A agus B againn, agus ba mhaith linn na maitrísí comhfhreagracha a iolrú sa bhaisc:


A = np.random.rand(3, 2, 2)
B = np.random.rand(3, 2, 2)

# Perform batch matrix multiplication
C = np.einsum('bij,bjk->bik', A, B)

print(C)

Anseo, is ionann b agus toise an bhaisc.

Buntáistí an Nodaireacht Einsum

1. Binniúlacht: Tá nodaireacht Einsum dlúth, agus féadann sé oibríochtaí casta a léiriú go gonta

2. Solúbthacht: Is féidir leis raon leathan oibríochtaí tensor a láimhseáil gan eagair a athmhúnlú nó a thrasuíomh go sainráite

3. Éifeachtúlacht: Baineann go leor leabharlann an leas is fearr as na hoibríochtaí sin go hinmheánach, rud a d’fhéadfadh feidhmíocht níos fearr a bhaint amach.


Career Services background pattern

Seirbhísí Gairme

Contact Section background image

Bígí i dteagmháil

Code Labs Academy © 2025 Gach ceart ar cosaint.