tensorflow中tf.slice和tf.gather切片函数的使用

tf.slice(input_, begin, size, name=none):按照指定的下标范围抽取连续区域的子集

tf.gather(params, indices, validate_indices=none, name=none):按照指定的下标集合从axis=0中抽取子集,适合抽取不连续区域的子集

输出:

input = [[[1, 1, 1], [2, 2, 2]],
   [[3, 3, 3], [4, 4, 4]],
   [[5, 5, 5], [6, 6, 6]]]
tf.slice(input, [1, 0, 0], [1, 1, 3]) ==> [[[3, 3, 3]]]
tf.slice(input, [1, 0, 0], [1, 2, 3]) ==> [[[3, 3, 3],
           [4, 4, 4]]]
tf.slice(input, [1, 0, 0], [2, 1, 3]) ==> [[[3, 3, 3]],
           [[5, 5, 5]]]
           
tf.gather(input, [0, 2]) ==> [[[1, 1, 1], [2, 2, 2]],
        [[5, 5, 5], [6, 6, 6]]]

假设我们要从input中抽取[[[3, 3, 3]]],这个输出在inputaxis=0的下标是1,axis=1的下标是0,axis=2的下标是0-2,所以begin=[1,0,0],size=[1,1,3]。

假设我们要从input中抽取[[[3, 3, 3], [4, 4, 4]]],这个输出在inputaxis=0的下标是1,axis=1的下标是0-1,axis=2的下标是0-2,所以begin=[1,0,0],size=[1,2,3]。

假设我们要从input中抽取[[[3, 3, 3], [5, 5, 5]]],这个输出在inputaxis=0的下标是1-2,axis=1的下标是0,axis=2的下标是0-2,所以begin=[1,0,0],size=[2,1,3]。

假设我们要从input中抽取[[[1, 1, 1], [2, 2, 2]],[[5, 5, 5], [6, 6, 6]]],这个输出在input的axis=0的下标是[0, 2],不连续,可以用tf.gather抽取。input[0]和input[2]

以上这篇tensorflow中tf.slice和tf.gather切片函数的使用就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

相关推荐:

Python中如何实现NumPy数组的符号函数运算_利用sign函数判断正负

np.sign()返回整数1、-1、0分别表示正、负、零;复数返回单位复数;不区分±0.0;用作布尔掩码前须处理零值,性能依赖数据类型,不支持非数值类型。 NumPy的np.sign()到底返回什么值 np.sign()对数组元素逐个判断符号,返回整数:正数→1,负数→-1,零→0。注意它不区分+0...

如何将列表中的每个元素传入函数进行批量处理

本文详解如何将列表中每个数值逐一传递给单参数函数(如温度转换函数),避免直接传入列表导致的类型错误,并提供列表推导式、map()和循环三种主流实现方式及最佳实践建议。 本文详解如何将列表中每个数值逐一传递给单参数函数(如温度转换函数),避免直接传入列表导致的类型错误,并提供列表推导式、map()和循...

如何用Python TensorFlow进行超参数调优_通过Keras Tuner解决

RandomSearch比手动试错更可靠,因其随机采样独立性强、避免人为偏好导致的局部最优,能快速识别参数敏感性;配合对数均匀分布、合理max_trials和validation_split可提升实效性与复现性。 为什么RandomSearch比手动试错更可靠 手动改learning_rate、un...

如何在Python中将数值映射为等级标签_利用map函数结合字典

map()不能直接用字典映射数值到等级,必须传入函数;推荐lambdax:score_map.get(x,"未知")安全查表,区间分级则需条件函数或pd.cut()。 map函数在Python中不能直接映射数值到等级标签 直接用map()对数值列表调用字典是行不通的——字典不是可调用对象,会报Typ...