zoukankan      html  css  js  c++  java
  • Python keras.layers .ZeroPadding2D() 详解

    介绍

    在二维矩阵的四周填充0

    应用场景

    在卷积操作中,一般使用 padding='SAME' 填充0,但有时不灵活,我们想自己去进行补零操作,此时可以使用tf.keras.layers.ZeroPadding2D

    语法

    1 __init__(
    2 padding=(1, 1),
    3 data_format=None,
    4 **kwargs
    5 )
    参数
    • padding:整数,或者2个整数的元组,或者2个整数的2个元组的元组

      • 整数:以上下、左右对称的方式填充0
        例子:1,表示上下各填充一行0,即:行数加2;左右各填充一列0,即:列数加2

      • 2个整数的元组:第一个整数表示上下对称的方式填充0;第二个整数表示左右对称的方式填充0
        例子:(1,1),表示上下各填充一行0,即:行数加2;左右各填充一列0,即:列数加2

      • 2个整数的2个元组的元组:表示 ((top_pad, bottom_pad), (left_pad, right_pad))

    • data_format:字符串, “channels_last” (默认) 或 “channels_first”, 表示输入中维度的顺序。

      • channels_last 对应输入形状 (batch, height, width, channels)
      • channels_first 对应输入尺寸为 (batch, channels, height, width)。

    默认为在 Keras 配置文件 ~/.keras/keras.json 中的 image_data_format 值。 如果你从未设置它,将使用 “channels_last”。

    输入形状:

    4维 tensor :

    • 如果 data_format 是 “channels_last”: (batch, rows, cols, channels)
    • 如果 data_format 是 “channels_first”: (batch, channels, rows, cols)
    输出形状:

    4维 tensor :

    • 如果 data_format 是 “channels_last”: (batch, padded_rows, padded_cols, channels)
    • 如果 data_format 是 “channels_first”: (batch, channels, padded_rows, padded_cols)

    例子

    构建2维矩阵

    import numpy as np
    import tensorflow as tf
    np.set_printoptions(threshold=np.inf)
    
    np.random.seed(1)
    arr=np.random.randint(1,9,(4,4))
    print(arr)

    执行结果:

    1 [[6 4 5 1]
    2 [8 2 4 6]
    3 [8 1 1 2]
    4 [5 8 6 5]]

    例1

    传递1个整数,填充0:

    1 arr=arr.reshape(1,4,4,1)
    2 inp=tf.keras.Input((4,4,1))
    3 x=tf.keras.layers.ZeroPadding2D(1)(inp)
    4 model=tf.keras.Model(inp,x)
    5 res=model(arr)
    6 tf.print(tf.squeeze(res))

    例2

    传递2个整数的tuple,填充0:

    1 arr=arr.reshape(1,4,4,1)
    2 inp=tf.keras.Input((4,4,1))
    3 x=tf.keras.layers.ZeroPadding2D((1,2))(inp)
    4 model=tf.keras.Model(inp,x)
    5 res=model(arr)
    6 print(tf.squeeze(res).numpy())

    执行结果:

    1 [[0 0 0 0 0 0 0 0]
    2 [0 0 6 4 5 1 0 0]
    3 [0 0 8 2 4 6 0 0]
    4 [0 0 8 1 1 2 0 0]
    5 [0 0 5 8 6 5 0 0]
    6 [0 0 0 0 0 0 0 0]]

    例3

    1 arr=arr.reshape(1,4,4,1)
    2 inp=tf.keras.Input((4,4,1))
    3 x=tf.keras.layers.ZeroPadding2D(((1,2),(3,4)))(inp)
    4 model=tf.keras.Model(inp,x)
    5 res=model(arr)
    6 print(tf.squeeze(res).numpy())

    执行结果:

    1 [[0 0 0 0 0 0 0 0 0 0 0]
    2 [0 0 0 6 4 5 1 0 0 0 0]
    3 [0 0 0 8 2 4 6 0 0 0 0]
    4 [0 0 0 8 1 1 2 0 0 0 0]
    5 [0 0 0 5 8 6 5 0 0 0 0]
    6 [0 0 0 0 0 0 0 0 0 0 0]
    7 [0 0 0 0 0 0 0 0 0 0 0]]

    原文连接:https://www.malaoshi.top/show_1EF5LMACXvfQ.html

  • 相关阅读:
    Android Preference 实现长按监听 longclickable
    表达式求值
    二分图大讲堂——彻底搞定最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖、带权最优匹配
    poj 1806
    树的公共祖先问题LCA
    给定两个长度相同,分别有序的数组A和B,求两个数组中所有数的中位数
    网络爬虫基本原理(转载)
    atoi函数的实现
    一个天平,12个大小,外观相同的球,一个球的重量与其他的不同,称3次找出问题小球
    动态规划求RMQ(区间最值问题Range Minimum/Maximum Query)
  • 原文地址:https://www.cnblogs.com/LGJC1314/p/13403811.html
Copyright © 2011-2022 走看看