栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

tensorflow 函数解读系列之 tf.slice()

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

tensorflow 函数解读系列之 tf.slice()

 tf.slice 是tensorflow的切片用法

定义为:

def slice(input_, begin, size, name=None):
    """
    :param input_: 输入数据,切片对象
    :param begin:  切片的起始位置, begin.size = input_.shape[0]. 
    :param size:   切片后数据的 shape,size[i] 表示在 input_ 的第 i 
                   个维度中想要保留的数据个数
    :param name: 
    :return: 
    """

具体而言,切片就是以 begin 为起始点,size 为大小从 input_ 数据中截取一段内容。

以一种更 pythonic 的方式介绍就是,

tf.slice(input_,[0,1], [1,2]) == foo[0:1, 1:3]

所以这里需要注意的点是:

1. begin[i] + size[i] < input_.shape[i]

        对应的维度和需要小于给定数据的维度

        举个例子:

import tensorflow as tf
var = [[1,2,3],[4,5,6]]
with tf.Session() as sess:
    print(sess.run(tf.slice(var, [0,0], [2,1]))) # [[1], [2]]
    print(sess.run(tf.slice(var, [0,1], [1,2]))) # [[2 3]]
    # begin[0] + size[0] = 1 + 2 > var[0] = 2
    print(sess.run(tf.slice(var, [1,1], [2, 2])))  # 错误

        上述的错误点在于从 input_的第[1,1] 开始的数据少于2行,从而不能在进行切分下去,所以有如上要求。

2. begin 的最小值是 0,size 的最小值是 1,如果size 设置为 -1, 则表示保留 size 对应维度上的所有数据

最后放上官方的一个例子

t = tf.constant([[[1, 1, 1], [2, 2, 2]],
                   [[3, 3, 3], [4, 4, 4]],
                   [[5, 5, 5], [6, 6, 6]]])
tf.slice(t, [1, 0, 0], [1, 1, 3])  # [[[3, 3, 3]]]
tf.slice(t, [1, 0, 0], [1, 2, 3])  # [[[3, 3, 3],
                                   #  [4, 4, 4]]]
tf.slice(t, [1, 0, 0], [2, 1, 3])  # [[[3, 3, 3]],
                                   #  [[5, 5, 5]]]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/331270.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号