【CNN记录】tensorflow slice和strided_slice

这篇博客介绍了 TensorFlow 中用于从张量中提取切片的两种方法:`slice` 和 `strided_slice`。`slice` 函数通过指定开始索引和大小来提取切片,而 `strided_slice` 则增加了步长参数,允许更灵活的切片选择。通过实例展示了如何使用这两个函数,并解释了它们的参数及输出结果。
摘要由CSDN通过智能技术生成

两个函数都是从张量中提取切片

slice

tf.slice(input,begin,size,name=None)
参数说明:
input:输入数据
begin:是一个list,切片索引,对应各个维度,例如[0,1,2],三个维度分别冲0、1、2开始
size:是一个list,对应begin中指定位置开始,取多少元素

举个栗子

import tensorflow as tf
import numpy as np

#一个4x2x3的tensor
input = tf.constant([[[1, 1, 1], [2, 2, 2]],
                 [[3, 3, 3], [4, 4, 4]],
                 [[5, 5, 5], [6, 6, 6]],
                 [[7, 7, 7], [8, 8, 8]],
                 ])

out=tf.slice(input, [2, 0, 0], [2, 1, 2])
print(out)

输出:
tf.Tensor(
[[[5 5]]

 [[7 7]]], shape=(2, 1, 2), dtype=int32)

第一个维度从2开始取2个,即变为

                [[[5, 5, 5], [6, 6, 6]],

                 [[7, 7, 7], [8, 8, 8]]]

第二个维度从 0开始取1个,即变为

                [[[5, 5, 5]],

                 [[7, 7, 7]]]

第三个维度从0开始取2个,即变为

                 [[[5, 5]],

                 [[7, 7]]]

strided_slice

tf.strided_slice(
    input_, begin, end, strides=None, begin_mask=0, end_mask=0, ellipsis_mask=0,
    new_axis_mask=0, shrink_axis_mask=0, var=None, name=None)
参数解释:
input_:输入数据
begin:是一个list,切片索引,对应各个维度
end:是一个list,终止切片索引(开区间),对应各个维度终止索引
strides:各个维度进行切片的步长,不设置即为1

 举个栗子,和前面一样

import tensorflow as tf
import numpy as np

#一个4x2x3的tensor
input = tf.constant([[[1, 1, 1], [2, 2, 2]],
                 [[3, 3, 3], [4, 4, 4]],
                 [[5, 5, 5], [6, 6, 6]],
                 [[7, 7, 7], [8, 8, 8]],
                 ])


out = tf.strided_slice(input, [1, 0, 0], [4, 1, 2],[2,1,1])
print(out)

输出:
tf.Tensor(
[[[3 3]]

 [[7 7]]], shape=(2, 1, 2), dtype=int32)

第一个维度从1开始  区间[1,4),步长为2,切片为

                [[[3, 3, 3], [4, 4, 4]],

                 [[7, 7, 7], [8, 8, 8]]]

第二个维度从0开始  区间[0,1),步长为1,切片为

                [[[3, 3, 3]],

                 [[7, 7, 7]]]

第二个维度从0开始  区间[0,2),步长为1,切片为

                [[[3, 3],],

                 [[7, 7]]]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值