類包裝 dynamic-sized、per-time-step、write-once 張量數組。
用法
tf.TensorArray(
dtype, size=None, dynamic_size=None, clear_after_read=None,
tensor_array_name=None, handle=None, flow=None, infer_shape=True,
element_shape=None, colocate_with_first_write_call=True, name=None
)
參數
-
dtype
(必需)TensorArray 的數據類型。 -
size
(可選)int32 scalarTensor
:TensorArray 的大小。如果未提供句柄,則為必需。 -
dynamic_size
(可選)Python bool:如果為 true,則寫入 TensorArray 可以使 TensorArray 超過其初始大小。默認值:假。 -
clear_after_read
布爾值(可選,默認值:True)。如果為 True,請在讀取 TensorArray 值後清除它們。這會禁用 read-many 語義,但允許提前釋放內存。 -
tensor_array_name
(可選)Python 字符串:TensorArray 的名稱。這在創建 TensorArray 句柄時使用。如果設置了此值,則句柄應為無。 -
handle
(可選)現有 TensorArray 的Tensor
句柄。如果已設置,tensor_array_name 應為無。僅在圖形模式下支持。 -
flow
(可選)來自現有TensorArray.flow
的浮點Tensor
標量。僅在圖形模式下支持。 -
infer_shape
(可選,默認值:True)如果為 True,則啟用形狀推斷。在這種情況下,所有元素必須具有相同的形狀。 -
element_shape
(可選,默認值:無)TensorShape
對象,指定 TensorArray 的每個元素的形狀約束。不需要完全定義。 -
colocate_with_first_write_call
如果True
,則 TensorArray 將與首次寫入時使用的 Tensor 位於同一設備上(寫入操作包括write
,unstack
和split
)。如果False
,則 TensorArray 將放置在由初始化期間可用的設備上下文確定的設備上。 -
name
操作的名稱(可選)。
拋出
-
ValueError
如果同時提供了句柄和tensor_array_name。 -
TypeError
如果提供了句柄但不是張量。
屬性
-
dtype
此 TensorArray 的數據類型。 -
dynamic_size
Python 布爾值;如果True
TensorArray 可以動態增長。 -
element_shape
此 TensorArray 中元素的tf.TensorShape
。 -
flow
流Tensor
強製操作導致此 TensorArray 狀態。 -
handle
對 TensorArray 的引用。
此類旨在與動態迭代原語一起使用,例如 while_loop
和 map_fn
。它通過特殊的"flow"控製流依賴支持漸變back-propagation。
示例1:簡單的閱讀和寫作。
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)>
示例 2:循環寫入然後返回的斐波那契序列算法。
@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)>
示例 3:與 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)>
相關用法
- Python tf.TensorArray.stack用法及代碼示例
- Python tf.Tensor.__rsub__用法及代碼示例
- Python tf.TensorSpec.from_spec用法及代碼示例
- Python tf.Tensor.__lt__用法及代碼示例
- Python tf.Tensor.set_shape用法及代碼示例
- Python tf.Tensor.__abs__用法及代碼示例
- Python tf.Tensor用法及代碼示例
- Python tf.Tensor.ref用法及代碼示例
- Python tf.Tensor.__getitem__用法及代碼示例
- Python tf.Tensor.__ge__用法及代碼示例
- Python tf.TensorSpec.from_tensor用法及代碼示例
- Python tf.TensorShape.merge_with用法及代碼示例
- Python tf.Tensor.__rmatmul__用法及代碼示例
- Python tf.TensorShape.__eq__用法及代碼示例
- Python tf.Tensor.__bool__用法及代碼示例
- Python tf.Tensor.get_shape用法及代碼示例
- Python tf.Tensor.__xor__用法及代碼示例
- Python tf.Tensor.__sub__用法及代碼示例
- Python tf.Tensor.__rpow__用法及代碼示例
- Python tf.Tensor.__gt__用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.TensorArray。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。