Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

tf.TensorArray

Wersja TensorFlow 1 Wyświetl źródło na GitHub

Zawijanie klas tablic Tensor o rozmiarze dynamicznym, na krok czasu i jednokrotnego zapisu.

Używany w notebookach

Używany w przewodniku Używany w samouczkach

Ta klasa jest przeznaczona do użytku z prymitywami dynamicznej iteracji, takimi jak while_loop i map_fn . Obsługuje gradientu wsteczną propagację poprzez specjalne zależności sterowania przepływem.

Przykład 1: Zwykłe czytanie i pisanie.

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)>

Przykład 2: Algorytm sekwencji Fibonacciego, który pisze w pętli, a następnie zwraca.

@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)>

Przykład 3: Prosta pętla oddziałująca ze 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 (wymagany) typ danych TensorArray.
size (opcjonalnie) int32 scalar Tensor : rozmiar TensorArray. Wymagane, jeśli uchwyt nie jest dostarczony.
dynamic_size (opcjonalne) Python bool: jeśli true, zapisy do TensorArray mogą zwiększyć TensorArray powyżej jego początkowego rozmiaru. Domyślnie: False.
clear_after_read Boolean (opcjonalnie, domyślnie: True). Jeśli prawda, wyczyść wartości TensorArray po ich przeczytaniu. To wyłącza semantykę wielokrotnego odczytu, ale pozwala na wczesne zwolnienie pamięci.
tensor_array_name (opcjonalnie) Python string: nazwa TensorArray. Jest to używane podczas tworzenia uchwytu TensorArray. Jeśli ta wartość jest ustawiona, uchwyt powinien mieć wartość Brak.
handle (opcjonalnie) Uchwyt Tensor do istniejącej tablicy TensorArray. Jeśli jest ustawiona, tensor_array_name powinno mieć wartość None. Obsługiwane tylko w trybie wykresu.
flow (opcjonalnie) float Tensor scalar pochodzący z istniejącego TensorArray.flow . Obsługiwane tylko w trybie wykresu.
infer_shape (opcjonalnie, domyślnie: True) Jeśli True, wnioskowanie o kształcie jest włączone. W takim przypadku wszystkie elementy muszą mieć ten sam kształt.
element_shape (opcjonalnie, wartość domyślna: brak) Obiekt TensorShape określający ograniczenia kształtu każdego elementu TensorArray. Nie trzeba go w pełni zdefiniować.
colocate_with_first_write_call Jeśli True , tablica TensorArray zostanie umieszczona na tym samym urządzeniu, co Tensor użyty podczas pierwszego zapisu (operacje write obejmują write , unstack i split ). W przypadku wartości False tablica TensorArray zostanie umieszczona na urządzeniu określonym przez kontekst urządzenia dostępny podczas jego inicjalizacji.
name Nazwa operacji (opcjonalnie).

ValueError jeśli podano zarówno uchwyt, jak i tensor_array_name.
TypeError jeśli uchwyt jest dostarczony, ale nie jest tensorem.

dtype Typ danych tego TensorArray.
dynamic_size Python bool; jeśli True TensorArray może dynamicznie rosnąć.
element_shape tf.TensorShape elementów w tym TensorArray.
flow Operacje wymuszające przepływ przez Tensor prowadzące do tego stanu TensorArray.
handle Odniesienie do TensorArray.

Metody

close

Pokaż źródło

Zamknij bieżącą tablicę TensorArray.

concat

Pokaż źródło

Zwróć wartości w TensorArray jako połączone Tensor .

Wszystkie wartości musiały zostać zapisane, ich rangi muszą się zgadzać, a ich kształty muszą pasować do wszystkich wymiarów z wyjątkiem pierwszego.

Args
name Nazwa operacji (opcjonalnie).

Zwroty
Wszystkie tensory w TensorArray zostały połączone w jeden tensor.

gather

Pokaż źródło

Zwróć wybrane wartości w TensorArray jako spakowany Tensor .

Wszystkie wybrane wartości muszą zostać zapisane, a ich kształty muszą się zgadzać.

Args
indices Tensor 1-D przyjmujący wartości w [0, max_value) . Jeśli TensorArray nie jest dynamiczna, max_value=size() .
name Nazwa operacji (opcjonalnie).

Zwroty
TensorArray w TensorArray wybrane przez indices , upakowane w jeden tensor.

grad

Pokaż źródło

identity

Pokaż źródło

Zwraca TensorArray o tej samej zawartości i właściwościach.

Zwroty
Nowy obiekt TensorArray z przepływem, który zapewnia, że ​​zależności sterujące z kontekstów staną się zależnościami sterującymi dla zapisów, odczytów itp. Użyj tego obiektu dla wszystkich kolejnych operacji.

read

Pokaż źródło

Odczytaj wartość w index lokalizacji w TensorArray.

Args
index 0-D. tensor int32 z indeksem do odczytu.
name Nazwa operacji (opcjonalnie).

Zwroty
Tensor w index .

scatter

Pokaż źródło

Rozprosz wartości Tensor w określonych indeksach TensorArray .

Args
indices Tensor 1-D przyjmujący wartości w [0, max_value) . Jeśli TensorArray nie jest dynamiczna, max_value=size() .
value (N + 1) -D. Tensor typu dtype . Tensor do rozpakowania.
name Nazwa operacji (opcjonalnie).

Zwroty
Nowy obiekt TensorArray z przepływem zapewniającym wystąpienie rozproszenia. Użyj tego obiektu do wszystkich kolejnych operacji.

Podnosi
ValueError jeśli wnioskowanie o kształcie nie powiedzie się.

size

Pokaż źródło

Zwróć rozmiar TensorArray.

split

Pokaż źród