Skip to main content

Achoimre Einstein

Nuashonraithe ar July 14, 20263 Miontuairiscí Léigh


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.

Foghlaim scileanna teicniúla ar líne le Code Labs Academy

Foghlaim scileanna teicniúla ar líne le Code Labs Academy

Bí ar ár bpobal tacúil, díghlasáil do chumas, agus téigh ar chonair ghairme luachmhar.