tf.slice函數解析


tf.slice函數解析

覺得有用的話,歡迎一起討論相互學習~

我的微博我的github我的B站

tf.slice(input_, begin, size, name = None)

解釋

  • 這個函數的作用是從輸入數據input中提取出一塊切片
    • 切片的尺寸是size,切片的開始位置是begin。
    • 切片的尺寸size表示輸出tensor的數據維度,其中size[i]表示在第i維度上面的元素個數。
    • 開始位置begin表示切片相對於輸入數據input_的每一個偏移量,比如數據input是

[[[1, 1, 1], [2, 2, 2]],
[[33, 3, 3], [4, 4, 4]],
[[5, 5, 5], [6, 6, 6]]],

  • begin為[1, 0, 0],那么數據的開始位置是33。因為,第一維偏移了1,其余幾位都沒有偏移,所以開始位置是33。
  • 操作滿足:
    size[i] = input.dim_size(i) - begin[i]
    0 <= begin[i] <= begin[i] + size[i] <= Di for i in [0, n]
import tensorflow as tf

sess = tf.Session()
input = tf.constant([[[1, 1, 1], [2, 2, 2]],
                     [[3, 3, 3], [4, 4, 4]],
                     [[5, 5, 5], [6, 6, 6]]])
data = tf.slice(input, [1, 0, 0], [1, 1, 3])
print(sess.run(data))
"""[1,0,0]表示第一維偏移了1
則是從[[[3, 3, 3], [4, 4, 4]],[[5, 5, 5], [6, 6, 6]]]中選取數據
然后選取第一維的第一個,第二維的第一個數據,第三維的三個數據"""
# [[[3 3 3]]]
data = tf.slice(input, [1, 0, 0], [1, 2, 3])
print(sess.run(data))
# [[[3 3 3]
#   [4 4 4]]]
data = tf.slice(input, [1, 0, 0], [2, 1, 3])
print(sess.run(data))
# [[[3 3 3]]
#
#  [[5 5 5]]]
data = tf.slice(input, [1, 0, 0], [2, 2, 2])
print(sess.run(data))
# [[[3 3]
#   [4 4]]
#
#  [[5 5]
#   [6 6]]]
"""輸入參數:
  ● input_: 一個Tensor。
  ● begin: 一個Tensor,數據類型是int32或者int64。
  ● size: 一個Tensor,數據類型是int32或者int64。
  ● name:(可選)為這個操作取一個名字。
輸出參數:
  ● 一個Tensor,數據類型和input_相同。"""


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM