Hvad er en tensor i TensorFlow? Form, type & Operatorer

⚡ Smart opsummering

Tensorer er de n-dimensionelle arrays, som hver TensorFlow-beregning læser og skriver, der hver især bærer et navn, en form og en datatype. Denne gennemgang opbygger konstanter, variabler, pladsholdere og operatorer og evaluerer dem derefter i en session.

  • 🔘 Tre egenskaber: Hvert tf.Tensor-objekt eksponerer et unikt navn, en form og en dtype.
  • ☑️ Fire tensortyper: tf.constant, tf.Variable, tf.placeholder og tf.SparseTensor dækker den klassiske API.
  • ✅ Rang er lig med indlejring: Hvert ekstra par parenteser tilføjer én dimension til formtuplen.
  • 🧪 Udskudt evaluering: Udskrivning af en operation viser dens definition, ikke dens værdi, indtil en session kører den.
  • 🛠️ Graf og session: Grafen indeholder operationerne, mens sessionen udfører dem, og returnerer resultater.
  • ⚠️ Versionsnotat: Sessioner og pladsholdere tilhører TensorFlow 1.x og findes i dag under tf.compat.v1.

TensorFlow-grundlæggende: Tensor, form, type, sessioner og Operatorer

Hvad er en Tensor?

Navnet TensorFlow er afledt direkte fra dens kerneobjekt: tensoren. I TensorFlow involverer enhver beregning tensorer. En tensor er en vektor eller matrix med n dimensioner, der repræsenterer alle typer data. Alle værdier i en tensor har en identisk datatype med en kendt (eller delvist kendt) form, og formen af ​​dataene er dimensionaliteten af ​​matricen eller arrayet.

En tensor kan stamme fra inputdata eller fra resultatet af en beregning. I TensorFlow udføres alle operationer i en graf. Grafen er et sæt af beregninger, der finder sted successivt. Hver operation kaldes en op-node, og noderne er forbundet med hinanden.

Grafen skitserer operationerne og forbindelserne mellem noderne. Den viser dog ikke værdierne. Kanten mellem noderne er tensoren, dvs. en måde at udfylde operationen med data.

I maskinlæring fodres modeller med en liste over objekter kaldet featurevektorer. En featurevektor kan være af en hvilken som helst datatype, og det er normalt det primære input, der udfylder en tensor. Disse værdier flyder ind i en operationsnode gennem tensoren, og resultatet af denne operation opretter en ny tensor, som igen bruges i en ny operation. Alle disse operationer kan ses i grafen.

Repræsentation af en tensor

I TensorFlow er en tensor en samling af featurevektorer (dvs. et array) med n dimensioner. Hvis vi for eksempel har en 2×3-matrix med værdier fra 1 til 6, skriver vi den som matrixen vist nedenfor:

To gange tre matrix med værdierne et til seks i parentesnotation

TensorFlow repræsenterer denne matrix som:

[[1, 2, 3], 
   [4, 5, 6]]

Hvis vi opretter en tredimensionel matrix med værdier fra 1 til 8, tegnes de samme data som en boks med to stablede flader:

Tredimensionel tensor tegnet som en boks med værdierne et til otte på to stablede flader

TensorFlow repræsenterer denne matrix som:

[ [[1, 2],  
       [[3, 4],  
       [[5, 6],  
       [[7,8] ]

Bemærk: En tensor kan repræsenteres med en skalar eller kan have en form på mere end tre dimensioner. Det er simpelthen sværere at visualisere de højere dimensionsniveauer.

Typer af Tensor

I TensorFlow går alle beregninger gennem en eller flere tensorer. En tf.Tensor er et objekt med tre egenskaber:

  • En unik etiket (navn)
  • En dimension (form)
  • En datatype (dtype)

Hver operation, du udfører med TensorFlow, involverer manipulation af en tensor. Der er fire hovedtensortyper, du kan oprette:

  • tf.Variable
  • tf.constant
  • tf.placeholder
  • tf.SparseTensor

I denne vejledning lærer du, hvordan du opretter en tf.constant og en tf.Variable.

En ting du skal huske på, før du kører koden: denne vejledning følger den originale TensorFlow 1.x API, hvor en graf først bygges og udføres senere i en session. TensorFlow 2 kører som standard ivrigt, så flere af symbolerne nedenfor blev flyttet eller fjernet. Hver og en af ​​dem er stadig tilgængelig via tf.compat.v1 navnerummet, og tabellen knytter hver til dets moderne modstykke.

TensorFlow 1.x-symbol TensorFlow 2-ækvivalent
tf.placeholder() Ikke påkrævet. Ivrig udførelse accepterer Python eller NumPy-værdier direkte, og en tf.function Parameteren spiller den samme rolle i graftilstand.
tf.Session() og sess.run() Kald operationen direkte og aflæs resultatet, eller pak beregningen ind tf.function.
tf.get_variable() tf.Variable(), med almindelig Python objekter trackonger variablerne i stedet for samlinger.
tf.global_variables_initializer() Ikke påkrævet. A tf.Variable initialiseres i det øjeblik, den oprettes.
tf.div() tf.divide()Bemærk også, at undertekstentraction op staves tf.subtract(), Ikke tf.substract().

Før du går igennem vejledningen, skal du sørge for at aktivere conda-miljøet, hvor TensorFlow er installeret. Dette miljø hedder hello-tf.

Til macOS brugere:

source activate hello-tf

Til Windows brugere:

activate hello-tf

Når du har gjort det, er du klar til at importere TensorFlow.

# Import tf
import tensorflow as tf

Opret en Tensor af n-Dimension

Du begynder med skabelsen af ​​en tensor med én dimension, nemlig en skalar.

For at oprette en tensor kan du bruge tf.constant() som vist i eksemplet på TensorFlow-tensorformen nedenfor:

tf.constant(value, dtype, name = "")
arguments

- `value`: Value of n dimension to define the tensor. Optional
- `dtype`: Define the type of data:    
    - `tf.string`: String variable    
    - `tf.float32`: Float variable    
    - `tf.int16`: Integer variable
- "name": Name of the tensor. Optional. By default, `Const_1:0`

For at oprette en tensor med dimension 0, kør følgende kode.

## rank 0
# Default name
r1 = tf.constant(1, tf.int16) 
print(r1)			

Produktion

Tensor("Const:0", shape=(), dtype=int16)

De tre dele af det output afbildes på de tre tensoregenskaber, som den kommenterede version nedenfor tydeligt viser.

Tensoroutput annoteret med callouts, der markerer navn, form og datatype

Du kan også give tensoren dit eget navn med name argument.

# Named my_scalar
r2 = tf.constant(1, tf.int16, name = "my_scalar") 
print(r2)

Produktion

Tensor("my_scalar:0", shape=(), dtype=int16)

Hver tensor vises med sit tensornavn. Hvert tensorobjekt er defineret med attributter såsom en unik etiket (navn), en dimension (form) og en TensorFlow-datatype (dtype).

Du kan definere en tensor med decimalværdier eller med en streng ved at ændre typen af ​​data.

# Decimal
r1_decimal = tf.constant(1.12345, tf.float32)
print(r1_decimal)
# String
r1_string = tf.constant("Guru99", tf.string)
print(r1_string)

Produktion

Tensor("Const_1:0", shape=(), dtype=float32)
Tensor("Const_2:0", shape=(), dtype=string)

En tensor med dimension 1 kan oprettes som følger:

## Rank 1
r1_vector = tf.constant([1,3,5], tf.int16)
print(r1_vector)
r2_boolean = tf.constant([True, True, False], tf.bool)
print(r2_boolean)

Produktion

Tensor("Const_3:0", shape=(3,), dtype=int16)
Tensor("Const_4:0", shape=(3,), dtype=bool)

Du kan bemærke, at TensorFlow-formen kun består af én kolonne.

For at oprette et array med 2 tensordimensioner skal du lukke parenteserne efter hver række. Se eksemplet på tensorformen nedenfor.

## Rank 2
r2_matrix = tf.constant([ [1, 2],
                          [3, 4] ],tf.int16)
print(r2_matrix)

Produktion

Tensor("Const_5:0", shape=(2, 2), dtype=int16)

Matricen har 2 rækker og 2 kolonner fyldt med værdierne 1, 2, 3 og 4.

En matrix med 3 dimensioner konstrueres ved at tilføje et ekstra niveau af parenteser.

## Rank 3
r3_matrix = tf.constant([ [[1, 2],
                           [3, 4], 
                           [5, 6]] ], tf.int16)
print(r3_matrix)

Produktion

Tensor("Const_6:0", shape=(1, 3, 2), dtype=int16)

Resultatet matcher det tredimensionelle boksdiagram, der er vist tidligere i denne vejledning.

Tensorens form

Når du udskriver en tensor, udleder TensorFlow formen. Du kan dog læse formen direkte med TensorFlow. shape ejendom.

Nedenfor konstruerer du en matrix fyldt med tallene fra 10 til 15, og du kontrollerer formen af m_shape.

# Shape of tensor
m_shape = tf.constant([ [10, 11],
                        [12, 13],
                        [14, 15] ]                      
                     ) 
m_shape.shape

Produktion

TensorShape([Dimension(3), Dimension(2)])

Matrixen har 3 rækker og 2 kolonner.

TensorFlow har nyttige kommandoer til at skabe en vektor eller en matrix fyldt med 0 eller 1. For eksempel, hvis du vil oprette en 1-D tensor med en specifik form på 10, fyldt med 0, kan du køre koden nedenfor:

# Create a vector of 0
print(tf.zeros(10))

Produktion

Tensor("zeros:0", shape=(10,), dtype=float32)

Egenskaben fungerer også for en matrix. Her opretter du en 10×10 matrix fyldt med 1.

# Create a vector of 1
print(tf.ones([10, 10]))

Produktion

Tensor("ones:0", shape=(10, 10), dtype=float32)

Du kan bruge formen af ​​en given matrix til at lave en vektor af enere. Matricen m_shape har 3×2 dimensioner, så følgende kode opretter en tensor med 3 rækker fyldt med enere:

# Create a vector of ones with the same number of rows as m_shape
print(tf.ones(m_shape.shape[0]))

Produktion

Tensor("ones_1:0", shape=(3,), dtype=float32)

Hvis du skriver værdien 1 ind i parentesen, konstruerer du en vektor af enere lig med antallet af kolonner i matricen. m_shape.

# Create a vector of ones with the same number of column as m_shape
print(tf.ones(m_shape.shape[1]))

Produktion

Tensor("ones_2:0", shape=(2,), dtype=float32)

Endelig kan du oprette en 3×2-matrix fyldt udelukkende med enere.

print(tf.ones(m_shape.shape))

Produktion

Tensor("ones_3:0", shape=(3, 2), dtype=float32)

Datatype

Den anden egenskab ved en tensor er datatypen. En tensor kan kun indeholde én datatype ad gangen, og du kan læse den type med dtype ejendom.

print(m_shape.dtype)

Produktion

<dtype: &#x27;int32'>

I nogle tilfælde ønsker du at ændre datatypen. I TensorFlow er det muligt med tf.cast fremgangsmåde.

Eksempel

Nedenfor konverteres en flydende tensor til et heltal med cast fremgangsmåde.

# Change type of data
type_float = tf.constant(3.123456789, tf.float32)
type_int = tf.cast(type_float, dtype=tf.int32)
print(type_float.dtype)
print(type_int.dtype)

Produktion

<dtype: &#x27;float32'>
<dtype: &#x27;int32'>

TensorFlow vælger automatisk datatypen, når argumentet ikke er angivet under oprettelsen af ​​tensoren. TensorFlow gætter den mest sandsynlige datatype: hvis du f.eks. sender tekst, udleder den en streng.

Oprettelse af OperaTor

Nogle nyttige TensorFlow-programmer Operatorer

Du ved, hvordan man opretter en tensor med TensorFlow. Det er tid til at lære at udføre matematiske operationer.

TensorFlow indeholder alle de grundlæggende operationer. Du kan starte med en simpel en og bruge en TensorFlow-metode til at beregne kvadratroden af ​​et tal. Denne operation er ligetil, fordi kun ét argument er nødvendigt for at konstruere tensoren.

Kvadratroden af ​​et tal konstrueres med tf.sqrt(x), med x som et flydende tal.

x = tf.constant([2.0], dtype = tf.float32)
print(tf.sqrt(x))

Produktion

Tensor("Sqrt:0", shape=(1,), dtype=float32)

Bemærk: Outputtet returnerede et tensorobjekt og ikke kvadratroden af ​​2. I dette eksempel udskriver du definitionen af ​​tensoren og ikke den faktiske evaluering af operationen. I afsnittet Session nedenfor lærer du, hvordan TensorFlow udfører operationerne.

Følgende er en liste over almindeligt anvendte operationer. Ideen er den samme: hver operation kræver et eller flere argumenter.

  • tf.add(a, b)
  • tf.subtract(a, b)
  • tf.multiply(a, b)
  • tf.divide(a, b)
  • tf.pow(a, b)
  • tf.exp(a)
  • tf.sqrt(a)

Eksempel

# Add
tensor_a = tf.constant([[1,2]], dtype = tf.int32)
tensor_b = tf.constant([[3, 4]], dtype = tf.int32)

tensor_add = tf.add(tensor_a, tensor_b)
print(tensor_add)

Produktion

Tensor("Add:0", shape=(1, 2), dtype=int32)

Code Forklaring

Opret to tensorer:

  • en tensor med 1 og 2
  • en tensor med 3 og 4

Du lægger begge tensorer sammen.

Bemærk at begge tensorer skal have samme form. Du kan også udføre en multiplikation over de to tensorer.

# Multiply
tensor_multiply = tf.multiply(tensor_a, tensor_b)
print(tensor_multiply)

Produktion

Tensor("Mul:0", shape=(1, 2), dtype=int32)

Variabler

Indtil videre har du kun oprettet konstante tensorer, hvilket i sig selv er af begrænset nytte. Data ankommer altid med forskellige værdier, og for at registrere det kan du bruge Variable-klassen. En variabel repræsenterer en node, hvis værdier ændrer sig over tid.

For at oprette en variabel kan du bruge tf.get_variable() fremgangsmåde.

tf.get_variable(name = "", values, dtype, initializer)
argument
- `name = ""`: Name of the variable
- `values`: Dimension of the tensor
- `dtype`: Type of data. Optional
- `initializer`: How to initialize the tensor. Optional
If initializer is specified, there is no need to include the `values` as the shape of `initializer` is used.

For eksempel opretter koden nedenfor en todimensionel variabel med to tilfældige værdier. Som standard returnerer TensorFlow en tilfældig værdi. Du navngiver variablen var.

# Create a Variable
## Create 2 Randomized values
var = tf.get_variable("var", [1, 2])
print(var.shape)

Produktion

(1, 2)

I dette eksempel opretter du en variabel med én række og to kolonner, så du bruger [1, 2] som variablens dimension.

Startværdierne for en tensor kan også være nul. Når du træner en model, skal du for eksempel bruge startværdier, før du beregner vægten af ​​funktionerne. Nedenfor sætter du disse startværdier til nul.

var_init_1 = tf.get_variable("var_init_1", [1, 2], dtype=tf.int32,  initializer=tf.zeros_initializer)
print(var_init_1.shape)

Produktion

(1, 2)

Du kan også overføre værdierne af en konstant tensor til en variabel. Du opretter en konstant tensor med metoden tf.constant() og brug denne tensor til at initialisere variablen.

De første værdier af variablen er 10, 20, 30 og 40. Den nye tensor har formen 2×2.

# Create a 2x2 matrix
tensor_const = tf.constant([[10, 20],
[30, 40]])
# Initialize the first value of the tensor equals to tensor_const
var_init_2 = tf.get_variable("var_init_2", dtype=tf.int32,  initializer=tensor_const)
print(var_init_2.shape)

Produktion

(2, 2)

Pladsholder

En pladsholder har til formål at forsyne tensoren. En pladsholder initialiserer de data, der vil flyde inden i tensorerne. For at forsyne en pladsholder bruger du feed_dict argument, og pladsholderen indtastes kun i en session.

I det næste eksempel vil du se, hvordan du opretter en pladsholder med metoden tf.placeholderI sessionsafsnittet lærer du at indsætte en pladsholder med en faktisk tensorværdi.

Syntaxen er:

tf.placeholder(dtype,shape=None,name=None )
arguments:
- `dtype`: Type of data
- `shape`: dimension of the placeholder. Optional. By default, shape of the data
- `name`: Name of the placeholder. Optional			
data_placeholder_a = tf.placeholder(tf.float32, name = "data_placeholder_a")
print(data_placeholder_a)

Produktion

Tensor("data_placeholder_a:0", dtype=float32)

Session

TensorFlow arbejder omkring 3 hovedkomponenter:

  • Graf
  • tensor
  • Session
Komponenter Beskrivelse
Graf Grafen er fundamental i TensorFlow. Alle matematiske operationer (operationer) udføres inde i en graf. Man kan forestille sig en graf som et projekt, hvor alle operationer udføres. Noderne repræsenterer disse operationer, og de kan absorbere eller skabe nye tensorer.
tensor En tensor repræsenterer de data, der bevæger sig mellem operationer. Du så tidligere, hvordan man initialiserer en tensor. Forskellen mellem en konstant og en variabel er, at de indledende værdier af en variabel vil ændre sig over tid.
Session En session udfører operationerne fra grafen. For at fodre grafen med værdierne af en tensor, skal du åbne en session. Inde i en session skal du køre en operator for at oprette et output.

Grafer og sessioner er uafhængige. Du kan køre en session og gemme værdierne til senere beregninger.

I eksemplet nedenfor vil du:

  • Opret to tensorer
  • Opret en operation
  • Åbn en session
  • Udskriv resultatet

Trin 1) Du opretter to tensorer x og y

## Create, run  and evaluate a session
x = tf.constant([2])
y = tf.constant([4])

Trin 2) Du opretter operatoren ved at gange x og y

## Create operator
multiply = tf.multiply(x, y)

Trin 3) Du åbner en session. Alle beregningerne sker i sessionen, og når du er færdig, skal du lukke den.

## Create a session to run the code
sess = tf.Session()
result_1 = sess.run(multiply)
print(result_1)
sess.close()

Produktion

[8]

Code forklaring

  • tf.Session()Åbn en session. Alle handlinger foregår i sessionen.
  • run(multiply)udfør den handling, der blev oprettet i trin 2
  • print(result_1)Endelig kan du udskrive resultatet
  • close()Luk sessionen

Resultatet viser 8, som er multiplikationen af ​​x og y.

En anden måde at oprette en session på er inden for en blok. Fordelen er, at det lukker sessionen automatisk.

with tf.Session() as sess:
    result_2 = multiply.eval()
print(result_2)

Produktion

[8]

I forbindelse med en session kan du bruge eval() metode til at udføre operationen. Det svarer til run() og gør koden mere læsbar.

Du kan oprette en session og se værdierne inde i de tensorer, du har oprettet indtil videre.

## Check the tensors created before
sess = tf.Session()
print(sess.run(r1))
print(sess.run(r2_matrix))
print(sess.run(r3_matrix))

Produktion

1
[[1 2] 
 [3 4]]
[[[1 2]  
  [3 4]  
  [5 6]]]

Variabler er som standard tomme, selv efter du har oprettet tensoren. Du skal initialisere en variabel, før du kan bruge den. Objektet tf.global_variables_initializer() kaldes for at initialisere værdierne for hver variabel på én gang, hvilket er nyttigt, før du træner en model.

Du kan kontrollere værdierne af de variabler, du oprettede før. Bemærk, at du skal bruge `run` til at evaluere tensoren.

sess.run(tf.global_variables_initializer())
print(sess.run(var))
print(sess.run(var_init_1))
print(sess.run(var_init_2))

Produktion

[[-0.05356491  0.75867283]]
[[0 0]]
[[10 20] 
 [30 40]]

Du kan bruge den pladsholder, du oprettede før, og indtaste en faktisk værdi i den. Du skal sende dataene til feed_dict argument.

For eksempel vil du tage magten af ​​2 af pladsholderen data_placeholder_a.

import numpy as np
power_a = tf.pow(data_placeholder_a, 2)
with tf.Session() as sess:
    data = np.random.rand(1, 10)
    print(sess.run(power_a, feed_dict={data_placeholder_a: data}))  # Will succeed.

Code Forklaring

  • import numpy as np: Importer nusset biblioteket til at oprette dataene
  • tf.pow(data_placeholder_a, 2)Opret operationerne
  • np.random.rand(1, 10)Opret et tilfældigt dataarray
  • feed_dict={data_placeholder_a: data}: Fod pladsholderen med data

Produktion

[[0.05478134 0.27213147 0.8803037  0.0398424  0.21172127 0.01444725  0.02584014 0.3763949  0.66022706 0.7565559 ]]

Graf

TensorFlow gengiver hver operation med et dataflowskema. Dataflowgrafen er designet til at vise dataafhængighederne mellem individuelle operationer. En matematisk formel eller en algoritme er lavet af et antal successive operationer, og en graf er en bekvem måde at visualisere, hvordan disse beregninger er koordineret.

Grafen viser knuder og kanter. En knude er repræsentationen af ​​en operation, dvs. beregningsenheden. En kant er tensoren: den kan producere en ny tensor eller forbruge inputdataene, afhængigt af afhængighederne mellem de enkelte operationer.

Grafens struktur forbinder operationerne (dvs. noderne) sammen og viser, hvordan hver enkelt tilføres. Bemærk, at grafen ikke viser outputtet af operationerne; den hjælper kun med at visualisere forbindelserne mellem dem.

Lad os se et eksempel. Forestil dig, at du vil evaluere følgende funktion:

Formel f for x og z er lig med x gange z plus x i anden potens plus z plus fem

TensorFlow opbygger en graf for at udføre funktionen. Grafen ser sådan ud:

TensorFlow-graf med X- og Z-variable noder, der fodrer Mul-, Pow- og tre additionsoperationer

Du kan nemt se den vej, som tensorerne vil tage for at nå den endelige destination.

For eksempel er den add Noden kan ikke køre før begge Mul og Pow har produceret deres resultater. Grafen viser, at TensorFlow vil:

  1. beregn x·z i Mul knude og x² i Pow node
  2. læg disse to resultater sammen i add node
  3. Læg z til den sum i add_1 node
  4. Læg konstanten 5 til i add_2 node
x = tf.get_variable("x", dtype=tf.int32,  initializer=tf.constant([5]))
z = tf.get_variable("z", dtype=tf.int32,  initializer=tf.constant([6]))
c = tf.constant([5], name =	"constant")
square = tf.constant([2], name =	"square")
f = tf.multiply(x, z) + tf.pow(x, square) + z + c

Code Forklaring

  • x: Initialiser en variabel kaldet x med en konstant værdi på 5
  • z: Initialiser en variabel kaldet z med en konstant værdi på 6
  • c: Initialiser en konstant tensor kaldet c med en konstant værdi på 5
  • kvadrat: Initialiser en konstant tensor kaldet kvadrat med en konstant værdi på 2
  • f: Konstruer operatøren

I dette eksempel holdes værdierne af variablerne faste. Den konstante tensor c er den konstante parameter i funktionen f og antager en fast værdi på 5; i grafen kan du se denne parameter i tensoren kaldet konstanten.

En konstant tensor blev også skabt for potensen i operatoren tf.pow()Det er ikke nødvendigt, men det betyder, at eksponenten vises i grafen som den cirkel, der kaldes kvadratet.

Ud fra grafen kan du følge, hvad der sker med tensorerne, og hvorfor funktionen returnerer 66: 5 × 6 plus 5² plus 6 plus 5 er lig med 66.

Koden nedenfor evaluerer funktionen i en session.

init = tf.global_variables_initializer() # prepare to initialize all variables
with tf.Session() as sess:
    init.run() # Initialize x and y
    function_result = f.eval()
print(function_result)

Produktion

[66]

TensorFlow Grundlæggende Hurtigreference

De fire tabeller nedenfor samler alle kommandoer, der bruges i denne vejledning, så du kan slå en op uden at skulle rulle tilbage gennem eksemplerne.

Opret en konstant tensor

konstant objekt
D0 tf.constant(1, tf.int16)
D1 tf.constant([1,3,5], tf.int16)
D2 tf.constant([ [1, 2], [3, 4] ],tf.int16)
D3 tf.constant([ [[1, 2],[3, 4], [5, 6]] ], tf.int16)

Opret en operatør

Opret en operatør Object
a + b tf.add(a, b)
a * b tf.multiply(a, b)

Opret en variabel tensor

Opret en variabel objekt
randomiseret værdi tf.get_variable("var", [1, 2])
initialiseret første værdi tf.get_variable("var_init_2", dtype=tf.int32, initializer=[ [1, 2], [3, 4] ])

Åbn en session

Session objekt
Opret en session tf.Session()
Kør en session tf.Session.run()
Evaluer en tensor variable_name.eval()
Luk en session sess.close()
Session for blok with tf.Session() as sess:

Ofte Stillede Spørgsmål

Suffikset er outputindekset for den operation, der producerede tensoren. Const:0 betyder det første output fra operationen med navnet Const. Operationer med flere output er nummereret :0, :1 og så videre.

Under eager execution, kald tensorens numpy() metode, eller send den til np.array(). I den graf-og-session stil, der vises her, er den værdi, der returneres af sess.run(), allerede en nusset array.array.

En ragged tensor indeholder rækker af forskellig længde, hvilket en normal tensor ikke kan. Den oprettes med tf.ragged.constant og passer til data med variabel længde, såsom sætninger, hvor udfyldning af hver række til én bredde ville spilde hukommelse.

TensorFlow anvender broadcasting: den sammenligner formerne fra den bageste dimension bagud og strækker enhver akse med en længde, der matcher. Former, der ikke kan justeres på denne måde, genererer en InvalidArgumentError i stedet for at gætte.

TensorFlow placerer automatisk operationer på en synlig GPU. For at tvinge en enhed skal du pakke koden ind i en blok med tf.device('/GPU:0'). Brug først tf.config.list_physical_devices('GPU') for at bekræfte, at enheden faktisk er registreret.

Begge lagrer typebestemte n-dimensionelle data, men en tensor er uforanderlig, kan ligge på en GPU eller TPU og registrerer de operationer, der anvendes på den, så gradienter kan beregnes. Et NumPy-array gør ingen af ​​disse tre ting.

Statiske typekontrolprogrammer og formannotationsbiblioteker sammenligner deklarerede former med operationerne i din kode og markerer uoverensstemmelser, før en kørsel starter. Redigeringsassistenter viser de samme advarsler inline, hvilket fjerner de fleste trial-and-error-genoprettelser.ping.

GitHub Copilot foreslår hurtig omskrivning af sessions- og pladsholderkode med hurtig udførelse. Bekræft hvert forslag, fordi det ofte foreslår tf.compat.v1-shims, hvor der findes en ægte TensorFlow 2-erstatning.

Opsummer dette indlæg med: