欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

tf.slice解析

发布时间:2023/12/18 编程问答 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 tf.slice解析 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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 tfsess = 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_相同。"""

小白的总结:(我胡乱讲的,写给我自己看的)

1、begin为【0 0 0】时,表示从头开始,为【1 0 0 】时表示从第二行开始取,同理为【2 0 0】时,表示从第三行开始取。

2、当begin为【0 0 0】,size为【1 1 1】时。表示从头取个一行一列一元 的数组,即结果为【【【1】】】

3、当begin为【1 0 0】,size为【1 2 2】时,表示从第二行开始,取一个一行二列二元的数组,即【【【3 3】,【【4 4】】】

4、当begin为【1 0 0】,size为【2 2 3】时,表示从第二行开始取一个二行二列的三元数组,即【【【3 3 3】【4 4 4】】,

                                                                                                                                                          【【5 5 5 】【6 6 6】】】

 参考:https://www.cnblogs.com/cloud-ken/p/8457077.html

总结

以上是生活随笔为你收集整理的tf.slice解析的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。