zoukankan      html  css  js  c++  java
  • TensorFlow基础笔记(4) Tensor Transformation

    https://segmentfault.com/a/1190000008793389

    抽取

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

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

     begin为下标起始位置,size为获取个数
    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]]]

    下面通过图片实例来说明求解过程:
    import tensorflow as tf
    import numpy as np
    input = np.array([[[1, 1, 1], [2, 2, 2]],
    [[3, 3, 3], [4, 4, 4]],
    [[5, 5, 5], [6, 6, 6]]])
    print(input.shape)
    print(input)
    sess = tf.Session()
    out = tf.slice(input, [1, 0, 0], [1, 2, 3])
    print ('out: ',sess.run(out))

    输出:
    (3, 2, 3)
    [[[1 1 1]
      [2 2 2]]

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

     [[5 5 5]
      [6 6 6]]]
    out:
     [[[3 3 3]
      [4 4 4]]]

    维度为 3 * 2 * 3
    第0方向维度,竖直方向,维度为3
    第1方向维度,竖直方向,维度为2
    第2方向维度,水平方向,维度为3
    begin = [1, 0, 0]
    size = [1, 2, 3]
    定位到 input
    [1,1,2] = 3
      


  • 相关阅读:
    Java 调用存储过程、函数
    Java BaseDao
    写好Java代码的30条经验总结
    15款Java程序员必备的开发工具
    Oracle基础 表分区
    Oracle基础 索引
    Oracle基础 触发器
    Oracle基础 程序包
    Oracle基础 自定义函数
    Oracle基础 存储过程和事务
  • 原文地址:https://www.cnblogs.com/adong7639/p/7615558.html
Copyright © 2011-2022 走看看