• 【CNN记录】tensorflow slice和strided_slice


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

    slice

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

    举个栗子

    1. import tensorflow as tf
    2. import numpy as np
    3. #一个4x2x3的tensor
    4. input = tf.constant([[[1, 1, 1], [2, 2, 2]],
    5. [[3, 3, 3], [4, 4, 4]],
    6. [[5, 5, 5], [6, 6, 6]],
    7. [[7, 7, 7], [8, 8, 8]],
    8. ])
    9. out=tf.slice(input, [2, 0, 0], [2, 1, 2])
    10. print(out)
    11. 输出:
    12. tf.Tensor(
    13. [[[5 5]]
    14. [[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

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

     举个栗子,和前面一样

    1. import tensorflow as tf
    2. import numpy as np
    3. #一个4x2x3的tensor
    4. input = tf.constant([[[1, 1, 1], [2, 2, 2]],
    5. [[3, 3, 3], [4, 4, 4]],
    6. [[5, 5, 5], [6, 6, 6]],
    7. [[7, 7, 7], [8, 8, 8]],
    8. ])
    9. out = tf.strided_slice(input, [1, 0, 0], [4, 1, 2],[2,1,1])
    10. print(out)
    11. 输出:
    12. tf.Tensor(
    13. [[[3 3]]
    14. [[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]]]

     

  • 相关阅读:
    QT:debug日志—打不开头文件以及qDebug和Q_CLASSINFO的使用
    排序算法的分析及实现
    PyTorch学习笔记(二)
    go 的结构体极速序列化
    矩阵相乘详解
    玩鸿蒙项目来了,请尝鲜
    Python毕业设计源代码竞赛比赛平台
    膜拜,阿里自爆十万字Java面试手抄本,脉脉一周狂转50w/次
    springboot高校学生健康档案管理系统java ssm
    torch.gather函数的使用
  • 原文地址:https://blog.csdn.net/q2519008/article/details/126099480