Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

tf.TensorArray

Versi TensorFlow 1 Lihat sumber di GitHub

Pembungkus array array Tensor yang berukuran dinamis, sekali jalan, sekali tulis.

Digunakan di notebook

Digunakan dalam panduan Digunakan dalam tutorial

Kelas ini dimaksudkan untuk digunakan dengan primitif iterasi dinamis seperti while_loop dan map_fn . Ini mendukung propagasi balik gradien melalui ketergantungan aliran kontrol "aliran" khusus.

Contoh 1: Membaca dan menulis biasa.

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

Contoh 2: Algoritme deret Fibonacci yang menulis dalam satu lingkaran kemudian kembali.

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

Contoh 3: Loop sederhana berinteraksi dengan 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 (wajib) tipe data dari TensorArray.
size (opsional) int32 scalar Tensor : ukuran TensorArray. Diperlukan jika pegangan tidak tersedia.
dynamic_size (opsional) Python bool: Jika benar, menulis ke TensorArray dapat membuat TensorArray melampaui ukuran awalnya. Default: Salah.
clear_after_read Boolean (opsional, standar: Benar). Jika True, hapus nilai TensorArray setelah membacanya. Ini menonaktifkan semantik baca-banyak, tetapi memungkinkan pelepasan memori lebih awal.
tensor_array_name (opsional) String Python: nama TensorArray. Ini digunakan saat membuat pegangan TensorArray. Jika nilai ini disetel, pegangan harus Tidak ada.
handle (opsional) Tensor handle ke TensorArray yang ada. Jika ini disetel, tensor_array_name harus menjadi None. Hanya didukung dalam mode grafik.
flow (opsional) Skalar float Tensor berasal dari TensorArray.flow ada. Hanya didukung dalam mode grafik.
infer_shape (opsional, standar: Benar) Jika Benar, inferensi bentuk diaktifkan. Dalam hal ini, semua elemen harus memiliki bentuk yang sama.
element_shape (opsional, default: Tidak ada) Objek TensorShape menentukan batasan bentuk dari setiap elemen TensorArray. Tidak perlu didefinisikan sepenuhnya.
colocate_with_first_write_call Jika True , TensorArray akan ditempatkan pada perangkat yang sama dengan Tensor yang digunakan pada penulisan pertama (operasi write meliputi write , unstack , dan split ). Jika False , TensorArray akan ditempatkan pada perangkat yang ditentukan oleh konteks perangkat yang tersedia selama inisialisasi.
name Nama operasi (opsional).

ValueError jika handle dan tensor_array_name disediakan.
TypeError jika pegangan disediakan tetapi bukan Tensor.

dtype Tipe data TensorArray ini.
dynamic_size Python bool; jika True the TensorArray dapat tumbuh secara dinamis.
element_shape tf.TensorShape elemen di TensorArray ini.
flow Flow Tensor memaksa operasi yang mengarah ke status TensorArray ini.
handle Referensi ke TensorArray.

Metode

close

Lihat sumber

Tutup TensorArray saat ini.

concat

Lihat sumber

Kembalikan nilai dalam TensorArray sebagai Tensor gabungan.

Semua nilai harus ditulis, peringkatnya harus cocok, dan bentuknya harus cocok untuk semua dimensi kecuali yang pertama.

Args
name Nama operasi (opsional).

Kembali
Semua tensor di TensorArray digabungkan menjadi satu tensor.

gather

Lihat sumber

Kembalikan nilai yang dipilih di TensorArray sebagai Tensor dikemas.

Semua nilai yang dipilih harus sudah ditulis dan bentuknya harus cocok semuanya.

Args
indices Tensor 1-D mengambil nilai dalam [0, max_value) . Jika TensorArray tidak dinamis, max_value=size() .
name Nama untuk operasi (opsional).

Kembali
Tensor di TensorArray dipilih berdasarkan indices , dikemas ke dalam satu tensor.

grad

Lihat sumber

identity

Lihat sumber

Menampilkan TensorArray dengan konten dan properti yang sama.

Kembali
Objek TensorArray baru dengan aliran yang memastikan dependensi kontrol dari konteks akan menjadi dependensi kontrol untuk penulisan, pembacaan, dll. Gunakan objek ini untuk semua operasi selanjutnya.

read

Lihat sumber

Baca nilai di index lokasi di TensorArray.

Args
index 0-D. tensor int32 dengan indeks untuk membaca.
name Nama untuk operasi (opsional).