Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

tf.TensorArray

TensorFlow 1 Version Quelle auf GitHub anzeigen

Klassenumbruch dynamischer Tensor-Arrays mit einmaligem Schreibvorgang pro Zeitschritt.

Wird in den Notizbüchern verwendet

Wird in der Anleitung verwendet Wird in den Tutorials verwendet

Diese Klasse soll mit dynamischen Iterationsprimitiven wie while_loop und map_fn . Es unterstützt die Gradienten-Rückausbreitung über spezielle "Fluss" -Steuerungsflussabhängigkeiten.

Beispiel 1: Einfaches Lesen und Schreiben.

ta = tf.TensorArray(tf.float32, size=0, dynamic_size=True, clear_after_read=False)
ta = ta.write(0, 10)
ta = ta.write(1, 20)
ta = ta.write(2, 30)

ta.read(0)
<tf.Tensor: shape=(), dtype=float32, numpy=10.0>
ta.read(1)
<tf.Tensor: shape=(), dtype=float32, numpy=20.0>
ta.read(2)
<tf.Tensor: shape=(), dtype=float32, numpy=30.0>
ta.stack()
<tf.Tensor: shape=(3,), dtype=float32, numpy=array([10., 20., 30.],
dtype=float32)>

Beispiel 2: Der Fibonacci-Sequenzalgorithmus, der in eine Schleife schreibt, kehrt dann zurück.

@tf.function
def fibonacci(n):
  ta = tf.TensorArray(tf.float32, size=0, dynamic_size=True)
  ta = ta.unstack([0., 1.])

  for i in range(2, n):
    ta = ta.write(i, ta.read(i - 1) + ta.read(i - 2))

  return ta.stack()

fibonacci(7)
<tf.Tensor: shape=(7,), dtype=float32,
numpy=array([0., 1., 1., 2., 3., 5., 8.], dtype=float32)>

Beispiel 3: Eine einfache Schleife, die mit einer tf.Variable .

 v = tf.Variable(1)
@tf.function
def f(x):
  ta = tf.TensorArray(tf.int32, size=0, dynamic_size=True)
  for i in tf.range(x):
    v.assign_add(i)
    ta = ta.write(i, v)
  return ta.stack()
f(5)
<tf.Tensor: shape=(5,), dtype=int32, numpy=array([ 1,  2,  4,  7, 11],
dtype=int32)>
 

dtype (erforderlicher) Datentyp des TensorArray.
size (optional) int32 Skalar Tensor : die Größe des TensorArray. Erforderlich, wenn kein Handle vorhanden ist.
dynamic_size (optional) Python-Bool: Wenn true, können Schreibvorgänge in das TensorArray das TensorArray über seine ursprüngliche Größe hinaus vergrößern. Standard: Falsch.
clear_after_read Boolean (optional, Standard: True). Wenn True, löschen Sie die TensorArray-Werte, nachdem Sie sie gelesen haben. Dies deaktiviert die Read-Many-Semantik, ermöglicht jedoch eine frühzeitige Freigabe des Speichers.
tensor_array_name (optional) Python-Zeichenfolge: Der Name des TensorArray. Dies wird beim Erstellen des TensorArray-Handles verwendet. Wenn dieser Wert festgelegt ist, sollte das Handle None sein.
handle (optional) Ein Tensor Handle für ein vorhandenes TensorArray. Wenn dies festgelegt ist, sollte tensor_array_name None sein. Wird nur im Grafikmodus unterstützt.
flow (optional) Ein Float- Tensor Skalar, der aus einem vorhandenen TensorArray.flow . Wird nur im Grafikmodus unterstützt.
infer_shape (optional, Standard: True) Wenn True, ist die Forminferenz aktiviert. In diesem Fall müssen alle Elemente die gleiche Form haben.
element_shape (Optional, Standard: Keine) Ein TensorShape Objekt, das die Formbeschränkungen für jedes der Elemente des TensorArray angibt. Muss nicht vollständig definiert sein.
colocate_with_first_write_call Wenn True , wird die TensorArray auf dem gleichen Gerät colocated werden , wie der Tensor auf seiner ersten Schreib verwendet (Schreiboperationen umfassen write , unstack und split ). Bei False wird das TensorArray auf dem Gerät platziert, das durch den während der Initialisierung verfügbaren Gerätekontext bestimmt wird.
name Ein Name für die Operation (optional).

ValueError wenn sowohl handle als auch tensor_array_name angegeben sind.
TypeError Wenn ein Griff vorhanden ist, aber kein Tensor ist.

dtype Der Datentyp dieses TensorArray.
dynamic_size Python Bool; Wenn True das TensorArray dynamisch wachsen.
element_shape Die tf.TensorShape von Elementen in diesem TensorArray.
flow Der Flow Tensor erzwingt Operationen, die zu diesem TensorArray-Zustand führen.
handle Der Verweis auf das TensorArray.

Methoden

close

Quelltext anzeigen

Schließen Sie das aktuelle TensorArray.

concat

Quelltext anzeigen

Geben Sie die Werte im TensorArray als verketteten Tensor .

Alle Werte müssen geschrieben worden sein, ihre Ränge müssen übereinstimmen und ihre Formen müssen für alle Dimensionen außer der ersten übereinstimmen.

Args
name Ein Name für die Operation (optional).

Kehrt zurück
Alle Tensoren im TensorArray sind zu einem Tensor verkettet.

gather

Quelltext anzeigen

Gibt ausgewählte Werte im TensorArray als gepackten Tensor .

Alle ausgewählten Werte müssen geschrieben worden sein und ihre Formen müssen übereinstimmen.

Args
indices Ein 1-D Tensor mit Werten in [0, max_value) . Wenn das TensorArray nicht dynamisch ist, ist max_value=size() .
name Ein Name für die Operation (optional).

Kehrt zurück
Die durch indices ausgewählten Tensoren im TensorArray in einen Tensor gepackt.

grad

Quelltext anzeigen

identity

Quelltext anzeigen

Gibt ein TensorArray mit demselben Inhalt und denselben Eigenschaften zurück.

Kehrt zurück
Ein neues TensorArray-Objekt mit Flow, das sicherstellt, dass die Steuerelementabhängigkeiten aus den Kontexten zu Steuerelementabhängigkeiten für Schreib-, Lese- usw. werden. Verwenden Sie dieses Objekt für alle nachfolgenden Vorgänge.

read

Quelltext anzeigen

Lesen Sie den Wert an der Stelle index im TensorArray.

Args
index 0-D. int32 Tensor mit dem Index, aus dem gelesen werden soll.
name Ein Name für die Operation (optional).

Kehrt zurück
Der Tensor am index .

scatter

Quelltext anzeigen

Streuen die Werte eines Tensor in bestimmten Indizes einer TensorArray .

Args
indices Ein 1-D Tensor mit Werten in [0, max_value) . Wenn das TensorArray nicht dynamisch ist, ist max_value=size() .
value (N + 1) -D. Tensor vom Typ dtype . Der Tensor zum Auspacken.
name Ein Name für die Operation (optional).

Kehrt zurück
Ein neues TensorArray-Objekt mit Fluss, das sicherstellt, dass die Streuung auftritt. Verwenden Sie dieses Objekt für alle nachfolgenden Operationen.

Erhöht
ValueError wenn die Forminferenz fehlschlägt.

size

Quelltext anzeigen

Geben Sie die Größe des TensorArray zurück.

split

Quelltext anzeigen

Teilen Sie die Werte eines Tensor in den TensorArray.

Args
value (N + 1) -D. Tensor vom Typ dtype . Der Tensor spaltet sich.
lengths 1-D. int32-Vektor mit den Längen, die beim Teilen des