當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.Tensor.__getitem__用法及代碼示例


用法

__getitem__(
    slice_spec, var=None
)

參數

  • tensor 一個 ops.Tensor 對象。
  • slice_spec 張量的參數。獲取項目.
  • var 在變量切片賦值的情況下,切片的變量對象(即張量是這個變量的隻讀視圖)。

返回

  • "tensor" 的適當切片,基於 "slice_spec"。

拋出

  • ValueError 如果切片範圍為負大小。
  • TypeError 如果切片索引不是 int、切片、省略號、tf.newaxis 或標量 int32/int64 張量。

Tensor.getitem 的重載。

此操作從張量中提取指定區域。該表示法類似於 NumPy,但目前僅支持基本索引。這意味著當前不允許使用非標量張量作為輸入。

一些有用的例子:

# Strip leading and trailing 2 elements
foo = tf.constant([1,2,3,4,5,6])
print(foo[2:-2].eval())  # => [3,4]

# Skip every other row and reverse the order of the columns
foo = tf.constant([[1,2,3], [4,5,6], [7,8,9]])
print(foo[::2,::-1].eval())  # => [[3,2,1], [9,8,7]]

# Use scalar tensors as indices on both dimensions
print(foo[tf.constant(0), tf.constant(2)].eval())  # => 3

# Insert another dimension
foo = tf.constant([[1,2,3], [4,5,6], [7,8,9]])
print(foo[tf.newaxis,:,:].eval()) # => [[[1,2,3], [4,5,6], [7,8,9]]]
print(foo[:, tf.newaxis,:].eval()) # => [[[1,2,3]], [[4,5,6]], [[7,8,9]]]
print(foo[:,:, tf.newaxis].eval()) # => [[[1],[2],[3]], [[4],[5],[6]],
[[7],[8],[9]]]

# Ellipses (3 equivalent operations)
foo = tf.constant([[1,2,3], [4,5,6], [7,8,9]])
print(foo[tf.newaxis,:,:].eval())  # => [[[1,2,3], [4,5,6], [7,8,9]]]
print(foo[tf.newaxis, ...].eval())  # => [[[1,2,3], [4,5,6], [7,8,9]]]
print(foo[tf.newaxis].eval())  # => [[[1,2,3], [4,5,6], [7,8,9]]]

# Masks
foo = tf.constant([[1,2,3], [4,5,6], [7,8,9]])
print(foo[foo > 2].eval())  # => [3, 4, 5, 6, 7, 8, 9]

注意:

  • tf.newaxisNone,就像在 NumPy 中一樣。
  • 隱式省略號放置在slice_spec 的末尾
  • 目前不支持 NumPy 高級索引。

API 中的用途:

此方法在 TensorFlow 的 API 中公開,因此庫開發人員可以為 Tensor.getitem 注冊調度,以允許它處理自定義複合張量和其他自定義對象。

API 符號不打算由用戶直接調用,並且確實出現在 TensorFlow 生成的文檔中。

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.Tensor.__getitem__。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。