• 填充与复制


    Outline

    • pad

    • tile

    • broadcast_to

    pad

    • [3]
    • [[1,2]]
    • [6]

    04-填充与复制-pad.jpg

    • [2,2]
    • [[0,1][1,1]] # [行,列]
    • [3,4]

    05-填充与复制2-pad.jpg

    import tensorflow as tf
    
    a = tf.reshape(tf.range(9), [3, 3])
    a
    
    <tf.Tensor: id=17, shape=(3, 3), dtype=int32, numpy=
    array([[0, 1, 2],
           [3, 4, 5],
           [6, 7, 8]], dtype=int32)>
    
    tf.pad(a, [[0, 0], [0, 0]])
    
    <tf.Tensor: id=20, shape=(3, 3), dtype=int32, numpy=
    array([[0, 1, 2],
           [3, 4, 5],
           [6, 7, 8]], dtype=int32)>
    
    tf.pad(a, [[
        1,
        0,
    ], [0, 0]])
    
    <tf.Tensor: id=23, shape=(4, 3), dtype=int32, numpy=
    array([[0, 0, 0],
           [0, 1, 2],
           [3, 4, 5],
           [6, 7, 8]], dtype=int32)>
    
    tf.pad(a, [[1, 1], [0, 0]])
    
    <tf.Tensor: id=26, shape=(5, 3), dtype=int32, numpy=
    array([[0, 0, 0],
           [0, 1, 2],
           [3, 4, 5],
           [6, 7, 8],
           [0, 0, 0]], dtype=int32)>
    
    tf.pad(a, [[1, 1], [1, 0]])
    
    <tf.Tensor: id=29, shape=(5, 4), dtype=int32, numpy=
    array([[0, 0, 0, 0],
           [0, 0, 1, 2],
           [0, 3, 4, 5],
           [0, 6, 7, 8],
           [0, 0, 0, 0]], dtype=int32)>
    
    tf.pad(a, [[1, 1], [1, 1]])
    
    <tf.Tensor: id=32, shape=(5, 5), dtype=int32, numpy=
    array([[0, 0, 0, 0, 0],
           [0, 0, 1, 2, 0],
           [0, 3, 4, 5, 0],
           [0, 6, 7, 8, 0],
           [0, 0, 0, 0, 0]], dtype=int32)>
    

    Image padding

    a = tf.random.normal([4, 28, 28, 3])
    a.shape
    
    TensorShape([4, 28, 28, 3])
    
    # 对图片的行和列padding两行
    b = tf.pad(a, [[0, 0], [2, 2], [2, 2], [0, 0]])
    b.shape
    
    TensorShape([4, 32, 32, 3])
    
    • [1,5,5,1]
    • [[0,0],[2,2],[2,2],[0,0]]
    • [1,9,9,1]

    06-填充与复制-imagePadding.jpg

    tile

    • repeat data along dim n times
    • [a,b,c],2
    • --> [a,b,c,a,b,c]
    a = tf.reshape(tf.range(9), [3, 3])
    a
    
    <tf.Tensor: id=76, shape=(3, 3), dtype=int32, numpy=
    array([[0, 1, 2],
           [3, 4, 5],
           [6, 7, 8]], dtype=int32)>
    
    # 1表示行不复制,2表示列复制为两倍
    tf.tile(a, [1, 2])
    
    <tf.Tensor: id=79, shape=(3, 6), dtype=int32, numpy=
    array([[0, 1, 2, 0, 1, 2],
           [3, 4, 5, 3, 4, 5],
           [6, 7, 8, 6, 7, 8]], dtype=int32)>
    
    tf.tile(a, [2, 1])
    
    <tf.Tensor: id=82, shape=(6, 3), dtype=int32, numpy=
    array([[0, 1, 2],
           [3, 4, 5],
           [6, 7, 8],
           [0, 1, 2],
           [3, 4, 5],
           [6, 7, 8]], dtype=int32)>
    
    tf.tile(a, [2, 2])
    
    <tf.Tensor: id=85, shape=(6, 6), dtype=int32, numpy=
    array([[0, 1, 2, 0, 1, 2],
           [3, 4, 5, 3, 4, 5],
           [6, 7, 8, 6, 7, 8],
           [0, 1, 2, 0, 1, 2],
           [3, 4, 5, 3, 4, 5],
           [6, 7, 8, 6, 7, 8]], dtype=int32)>
    

    tile VS broadcast_to

    aa = tf.expand_dims(a, axis=0)
    aa
    
    <tf.Tensor: id=90, shape=(1, 3, 3), dtype=int32, numpy=
    array([[[0, 1, 2],
            [3, 4, 5],
            [6, 7, 8]]], dtype=int32)>
    
    tf.tile(aa, [2, 1, 1])
    
    <tf.Tensor: id=93, shape=(2, 3, 3), dtype=int32, numpy=
    array([[[0, 1, 2],
            [3, 4, 5],
            [6, 7, 8]],
    
           [[0, 1, 2],
            [3, 4, 5],
            [6, 7, 8]]], dtype=int32)>
    
    # 不占用内存,性能更优
    tf.broadcast_to(aa, [2, 3, 3])
    
    <tf.Tensor: id=96, shape=(2, 3, 3), dtype=int32, numpy=
    array([[[0, 1, 2],
            [3, 4, 5],
            [6, 7, 8]],
    
           [[0, 1, 2],
            [3, 4, 5],
            [6, 7, 8]]], dtype=int32)>
  • 相关阅读:
    vue根据后端菜单自动生成路由(动态路由)
    自己前端工作中常用的一些公共函数
    前端工作中用到的openlayers相关的公共方法
    软件工具介绍
    “违反唯一约束”错误的解决方案:
    mysql 如何查看SQL语句执行的时间
    Mysql 一对多 一条数据对应多条数据 多条数据合并成一个字段显示
    事务传播机制和隔离级别
    python教程:函数的return语句运用
    python操作Excel表格小妙招:只需十行代码,可以将多张Excel合并为一张
  • 原文地址:https://www.cnblogs.com/nickchen121/p/10852722.html
Copyright © 2020-2023  润新知