keras 自定义padding tf.keras.layers.ZeroPadding2D

介绍

在二维矩阵的四周填充0

应用场景

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

语法

__init__(
padding=(1, 1),
data_format=None,
**kwargs
)

参数

  • 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)

执行结果:

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

例1
传递1个整数,填充0:

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

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

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

执行结果:

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

例3

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

执行结果:

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

原文出处:tf.keras.layers.ZeroPadding2D-马育民老师
https://www.malaoshi.top/show_1EF5LMACXvfQ.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值