Technology sharing

Intellectus pytorch axis

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

import torch
x = torch.arange(16).reshape(1,4,4)
print(x)
print('--------')
a = x.sum(axis = 1,keepdim=True)
a2 = x.sum(axis = 1,keepdim=False)
a3 = x.sum(axis = 0,keepdim=True)
a4 = x.sum(axis = 0,keepdim=False)
a5 = x.sum(axis = 2,keepdim=True)
print(a)
print(a2)
print('----------')
print(a3)
print(a4)
print(a5)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
 import torch
x = torch.arange(16).reshape(4,4)
print(x)
print('--------')
a = x.sum(axis = 1,keepdim=True)
a2 = x.sum(axis = 1,keepdim=False)
print(a)
print(a2)
print(x/a) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Haec duo exempla compone ad explicandas mutationes in axe diversis circumstantiis.
Operationes dimensionales in tensoriis et summationibus intellectus per axes specificas in PyTorch aliquid temporis accipit. Has operationes pedetentim per duo exempla resolvemus et axis mutationes sub diversis condicionibus singillatim exponamus.

primum exemplum

import torch
x = torch.arange(16).reshape(1, 4, 4)
print(x)
print('--------')
a = x.sum(axis=1, keepdim=True)
a2 = x.sum(axis=1, keepdim=False)
a3 = x.sum(axis=0, keepdim=True)
a4 = x.sum(axis=0, keepdim=False)
a5 = x.sum(axis=2, keepdim=True)
print(a)
print(a2)
print('----------')
print(a3)
print(a4)
print(a5)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
initial tensor
tensor([[[ 0,  1,  2,  3],
         [ 4,  5,  6,  7],
         [ 8,  9, 10, 11],
         [12, 13, 14, 15]]])
  • 1
  • 2
  • 3
  • 4

Hoc est figura (1, 4, 4) tensorium. Cogitare possumus eam ut massam continens 4x4 matrix.

Perorare per axem 1
  1. x.sum(axis=1, keepdim=True)

Summa per axem 1 (i.e. directio secundae dimensionis 4), dimensiones servans.

tensor([[[24, 28, 32, 36]]])
  • 1

Figura fit (1, 1, 4)

  1. x.sum(axis=1, keepdim=False)

Summa per axem 1, nulla dimensionalitas servatur.

tensor([[24, 28, 32, 36]])
  • 1

Figura fit (1, 4)

Perorare per axem 0
  1. x.sum(axis=0, keepdim=True)

Summa per axem 0 (i.e. directio primae dimensionis 1), servans dimensiones.

tensor([[[ 0,  1,  2,  3],
         [ 4,  5,  6,  7],
         [ 8,  9, 10, 11],
         [12, 13, 14, 15]]])
  • 1
  • 2
  • 3
  • 4

Quia tensor originalis solum unum elementum in axe 0 habet, consequens est idem ac tensor originalis, cum figura (1, 4, 4)

  1. x.sum(axis=0, keepdim=False)

Summa secundum axem 0, dimensionalitas non servatur.

tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11],
        [12, 13, 14, 15]])
  • 1
  • 2
  • 3
  • 4

Figura fit (4, 4)

Summa per axem 2
  1. x.sum(axis=2, keepdim=True)

Summa per axem 2 (i.e. tertia dimensio, directio 4), dimensiones servans.

tensor([[[ 6],
         [22],
         [38],
         [54]]])
  • 1
  • 2
  • 3
  • 4

Figura fit (1, 4, 1)

cardinis
  • keepdim=True Summa ratio servabitur, numerus dimensionum eventus non mutatur, sed magnitudo summarum dimensionum 1 fit.
  • keepdim=False Dimensiones summae tollentur, et numerus dimensionum in exitu minuetur.

secundum exemplum

import torch
x = torch.arange(16).reshape(4, 4)
print(x)
print('--------')
a = x.sum(axis=1, keepdim=True)
a2 = x.sum(axis=1, keepdim=False)
print(a)
print(a2)
print(x/a)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
initial tensor
tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11],
        [12, 13, 14, 15]])
  • 1
  • 2
  • 3
  • 4

Hoc est figura (4, 4) tensorium.

Perorare per axem 1
  1. x.sum(axis=1, keepdim=True)

Summa per axem 1 (i.e. directio secundae dimensionis 4), dimensiones servans.

tensor([[ 6],
        [22],
        [38],
        [54]])
  • 1
  • 2
  • 3
  • 4

Figura fit (4, 1)

  1. x.sum(axis=1, keepdim=False)

Summa per axem 1, nulla dimensionalitas servatur.

tensor([ 6, 22, 38, 54])
  • 1

Figura fit (4,)

Elementa summa ordine divisa
  1. x / a
tensor([[0.0000, 0.1667, 0.3333, 0.5000],
        [0.1818, 0.2273, 0.2727, 0.3182],
        [0.2105, 0.2368, 0.2632, 0.2895],
        [0.2222, 0.2407, 0.2593, 0.2778]])
  • 1
  • 2
  • 3
  • 4

Haec est summa uniuscuiusque elementi per ordinem respondentem divisa, unde sequitur;

tensor([[ 0/6,  1/6,  2/6,  3/6],
        [ 4/22,  5/22,  6/22,  7/22],
        [ 8/38,  9/38, 10/38, 11/38],
        [12/54, 13/54, 14/54, 15/54]])
  • 1
  • 2
  • 3
  • 4

Summarium axis et dimensionum mutationes

  • axis = 0: agunt secundum primam dimensionem (row), et summa aliarum dimensionum post complexionem manet.
  • axis = 1: Operatur secundum dimensionem secundam (columnam), et remanet summa primae et tertiae dimensionis sumpto.
  • axis = 2: Operatur tertiam dimensionem (profundum), et summa duarum primarum dimensionum post sumptionem manet.

usus keepdim=True Cum servatis dimensionibus, summa dimensio 1 fit.ususkeepdim=False Sublatis dimensionibus summae.

dubium;

Cur ordines in columnis pro reformandis (1, 4, 4)?

Tensor structure

Primas notiones recognoscamus primo:

  • tensor 2D (matrix): habet ordines et columnas.
  • 3D tensor: Matricas duas dimensiones multiplices componitur et matricum acervus cum dimensione "profundo" haberi potest.

Exemplum I: Duo dimensiva retinaculum (4, 4)

import torch
x = torch.arange(16).reshape(4, 4)
print(x)
  • 1
  • 2
  • 3

Output:

tensor([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11],
        [12, 13, 14, 15]])
  • 1
  • 2
  • 3
  • 4

Figura tensoris huius est (4, 4)matrix repraesentat 4x4;

  • OKhorizontalis;

    • Acies 0: [ 0, 1, 2, 3]
    • Line 1: [ 4, 5, 6, 7]
    • Line 2: [ 8, 9, 10, 11]
    • Line 3: [12, 13, 14, 15]
  • Listverticalis;

    • Columnae 0: [ 0, 4, 8, 12]
    • Columnae 1; [ 1, 5, 9, 13]
    • Columnae 2; [ 2, 6, 10, 14]
    • Columnae 3; [ 3, 7, 11, 15]

Exemplum II: tribus dimensionis tensor (1, 4, 4)

x = torch.arange(16).reshape(1, 4, 4)
print(x)
  • 1
  • 2

Output:

tensor([[[ 0,  1,  2,  3],
         [ 4,  5,  6,  7],
         [ 8,  9, 10, 11],
         [12, 13, 14, 15]]])
  • 1
  • 2
  • 3
  • 4

Figura tensoris huius est (1, 4, 4)1x4x4 tensorem trium dimensiva repraesentat;

  • Prima ratio est 1significans praepostere magnitudinem.
  • Secunda ratio est 4ordines significat ordines (per matrix).
  • Tertia ratio est 4significat columnarum numerum (columellae cuiusque matricis).

Explicatio summae per axem

Perorare per axem I (secunda dimensio)
  1. Duo dimensiva tensor (4, 4)
a = x.sum(axis=1, keepdim=True)
print(a)
  • 1
  • 2

Output:

tensor([[ 6],
        [22],
        [38],
        [54]])
  • 1
  • 2
  • 3
  • 4
  • Axis 1 est versus ordines et elementa cuiusque ordinis summatim;
    • [0, 1, 2, 3] => 0+1+2+3 = 6
    • [4, 5, 6, 7] => 4+5+6+7 = 22
    • [8, 9, 10, 11] => 8+9+10+11 = 38
    • [12, 13, 14, 15] => 12+13+14+15 = 54
  1. Tres dimensiva tensors (1, 4, 4)
a = x.sum(axis=1, keepdim=True)
print(a)
  • 1
  • 2

Output:

tensor([[[24, 28, 32, 36]]])
  • 1
  • 1 Axis est versus directionem primae matricis. Elementa cuiusque ordinis summa:
    • [0, 1, 2, 3] + [4, 5, 6, 7] + [8, 9, 10, 11] + [12, 13, 14, 15]
    • Summa per columnam: 24 = 0+4+8+12, 28 = 1+5+9+13, 32 = 2+6+10+14, 36 = 3+7+11+15;

Cur spectat sicut "columnae ordines"

exist (1, 4, 4) In tribus dimensionibus tensor, prima dimensio massam magnitudinem repraesentat, ut videtur quod unaquaeque matrix 4x4 adhuc processit in modo duplicato cum operante. Sed quia batch additur dimensio, aliter se habet a tensore duarum dimensivarum in summa operatione.

In specie:

  • Cum per axem 1 (secunda dimensio) sumimus ordines cuiusque matricis.
  • Cum per axem 0 (dimen- sionem primam), massam dimensiones sumimus.

Summatim

  • 2D tensor: Conceptus ordinum et columnarum sunt intuitivae.
  • 3D tensorPost batch inducta dimensio, ordo et columna operationes diversae videbunt, sed tamen adhuc operantur in unaquaque matrice duae dimensiva.
  • Cum qu& per axem, intelligendi summae dimensiones clavis est.