具有padding ='SAME'的Tensorflow / Keras Conv2D层的行为异常

东西

我的问题:

我进行的一项简单实验表明,padding='SAME'在Keras / TF的conv2d层中使用padding='VALID'与在先前的零填充层中使用不同

  1. 那怎么可能?
  2. Keras / TF垫在张量周围对称地归零吗?

实验说明-只要您有兴趣进一步阅读:

我使用该onnx2keras软件包将Pytorch模型转换为keras / TF。

onnx2keras遭遇与卷积层padding > 0在ONNX模型,它将其转换为Keras'Conv2Dvalid填充(即,没有填充!)中,由前面Keras'ZeroPadding2D层。这样效果很好,并且返回的输出与Pytorch网络产生的输出相同。

我还以为没有简单地使用它就很奇怪padding='SAME',因为大多数参考文献都说Keras / TF使用零填充,就像Pytorch一样。

尽管如此,我还是打了补丁onnx2keras,使它产生了我自己的Conv2D图层,padding='SAME'而不是'VALID'使用先前的零填充图层填充现有的解决方案这使得生成的模型返回的输出与具有零填充层的模型返回的输出不同,并且当然与我的Pytorch模型不同,后者在补丁发布之前都是相同的。

用户名

padding='Same' 在Keras中,意味着当输入大小和内核大小不完全匹配时,可以根据需要添加填充以弥补重叠。

padding ='Same'的示例:

# Importing dependency
import keras
from keras.models import Sequential
from keras.layers import Conv2D

# Create a sequential model
model = Sequential()

# Convolutional Layer
model.add(Conv2D(filters=24, input_shape=(5,5,1), kernel_size=(2,2), strides =(2,2) ,padding='Same'))

# Model Summary
model.summary()

代码输出-

Model: "sequential_20"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_28 (Conv2D)           (None, 3, 3, 24)          120       
=================================================================
Total params: 120
Trainable params: 120
Non-trainable params: 0
_________________________________________________________________

图片表示形式:下图显示了当padding ='Same'时,输入的填充(input_shape =(5,5,1),kernel_size =(2,2),步幅=(2,2))。

在此处输入图片说明

-------------------------------------------------- -------------------------------------------------- --------------

padding='Valid' 在Keras中,意味着不添加任何填充。

padding ='Valid'的示例: Conv2D使用了与我们上面用于padding ='Same'相同的输入。即(input_shape =(5,5,1),kernel_size =(2,2),步幅=(2, 2))

# Importing dependency
import keras
from keras.models import Sequential
from keras.layers import Conv2D

# Create a sequential model
model = Sequential()

# Convolutional Layer
model.add(Conv2D(filters=24, input_shape=(5,5,1), kernel_size=(2,2), strides =(2,2) ,padding='Valid'))

# Model Summary
model.summary()

代码输出-

Model: "sequential_21"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_29 (Conv2D)           (None, 2, 2, 24)          120       
=================================================================
Total params: 120
Trainable params: 120
Non-trainable params: 0
_________________________________________________________________

图片表示形式:下图显示当padding ='Valid'时,没有为输入添加任何填充(input_shape =(5,5,1),kernel_size =(2,2),步幅=(2,2))。在此处输入图片说明

-------------------------------------------------- -------------------------------------------------- --------------

现在让我们尝试用于padding='Valid'输入的相同代码(input_shape =(6,6,1),kernel_size =(2,2),步幅=(2,2))。这里的padding='Valid'行为应与相同padding='Same'

代码-

# Importing dependency
import keras
from keras.models import Sequential
from keras.layers import Conv2D

# Create a sequential model
model = Sequential()

# Convolutional Layer
model.add(Conv2D(filters=24, input_shape=(6,6,1), kernel_size=(2,2), strides =(2,2) ,padding='Valid'))

# Model Summary
model.summary()

代码输出-

Model: "sequential_22"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_30 (Conv2D)           (None, 3, 3, 24)          120       
=================================================================
Total params: 120
Trainable params: 120
Non-trainable params: 0
_________________________________________________________________

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 tensorflow Keras 中将图像拟合到 Conv2D 层时出错

来自分类Dev

Tensorflow Keras Conv2D多个过滤器

来自分类Dev

TensorFlow 2.0如何从tf.keras.layers层获取可训练变量,例如Conv2D或Dense

来自分类Dev

在 keras 中附加上一层?- Conv2D' 对象没有属性 'is_placeholder'

来自分类Dev

在 Tensorflow 中查找 conv2d 层的权重

来自分类Dev

我可以使用现有的操作(例如conv2d和张量操作)在python中的tensorflow中编写自定义层吗?

来自分类Dev

为什么tensorflow和keras SimpleRNN层具有默认激活tanh

来自分类Dev

为什么tensorflow和keras SimpleRNN层具有默认激活tanh

来自分类Dev

如何在具有tensorflow v2.x后端的keras中加载具有tensorflow v1.x后端的keras模型?

来自分类Dev

Tensorflow Keras预处理层

来自分类Dev

Keras:转置Conv2D层的内核以在另一个Conv2D层中重用

来自分类Dev

Keras:过度拟合的Conv2D

来自分类Dev

如何在具有tensorflow2和keras的多GPU上训练模型?

来自分类Dev

了解Keras Conv2D层中的参数数量

来自分类Dev

在Keras中是否可以看到Conv2D层之后的输出

来自分类Dev

如何理解Keras Conv2D层的第一个论点?

来自分类Dev

使用CPU的“ Keras后端+ Tensorflow”和“来自Tensorflow的Keras”之间有什么区别(在Tensorflow 2.x中)

来自分类Dev

创建可计算2D DCT的Keras / Tensorflow层

来自分类Dev

Keras 权重文件加载异常:将 2 层加载到具有 0 层的模型中

来自分类Dev

具有Keras API的Tensorflow 2.0是否是线程安全的?

来自分类Dev

将标量乘以具有tensorflow keras后端的张量

来自分类Dev

如何在特定大小的conv2d层中使用Padding

来自分类Dev

如何使用张量流/ keras中的预定内核列表初始化Conv2D层?

来自分类Dev

在 Keras Sequential 模型中,Conv2D 似乎要求内核比前一层厚更窄。为什么?

来自分类Dev

输入层的TensorFlow Keras尺寸错误

来自分类Dev

TensorFlow/Keras:输出层的形状错误

来自分类Dev

Keras/Tensorflow 输入到 RNN 层

来自分类Dev

值错误:没有这样的层 - 提取 tensorflow keras 层的输出

来自分类Dev

TensorFlow和Keras中的度量系统行为

Related 相关文章

  1. 1

    在 tensorflow Keras 中将图像拟合到 Conv2D 层时出错

  2. 2

    Tensorflow Keras Conv2D多个过滤器

  3. 3

    TensorFlow 2.0如何从tf.keras.layers层获取可训练变量,例如Conv2D或Dense

  4. 4

    在 keras 中附加上一层?- Conv2D' 对象没有属性 'is_placeholder'

  5. 5

    在 Tensorflow 中查找 conv2d 层的权重

  6. 6

    我可以使用现有的操作(例如conv2d和张量操作)在python中的tensorflow中编写自定义层吗?

  7. 7

    为什么tensorflow和keras SimpleRNN层具有默认激活tanh

  8. 8

    为什么tensorflow和keras SimpleRNN层具有默认激活tanh

  9. 9

    如何在具有tensorflow v2.x后端的keras中加载具有tensorflow v1.x后端的keras模型?

  10. 10

    Tensorflow Keras预处理层

  11. 11

    Keras:转置Conv2D层的内核以在另一个Conv2D层中重用

  12. 12

    Keras:过度拟合的Conv2D

  13. 13

    如何在具有tensorflow2和keras的多GPU上训练模型?

  14. 14

    了解Keras Conv2D层中的参数数量

  15. 15

    在Keras中是否可以看到Conv2D层之后的输出

  16. 16

    如何理解Keras Conv2D层的第一个论点?

  17. 17

    使用CPU的“ Keras后端+ Tensorflow”和“来自Tensorflow的Keras”之间有什么区别(在Tensorflow 2.x中)

  18. 18

    创建可计算2D DCT的Keras / Tensorflow层

  19. 19

    Keras 权重文件加载异常:将 2 层加载到具有 0 层的模型中

  20. 20

    具有Keras API的Tensorflow 2.0是否是线程安全的?

  21. 21

    将标量乘以具有tensorflow keras后端的张量

  22. 22

    如何在特定大小的conv2d层中使用Padding

  23. 23

    如何使用张量流/ keras中的预定内核列表初始化Conv2D层?

  24. 24

    在 Keras Sequential 模型中,Conv2D 似乎要求内核比前一层厚更窄。为什么?

  25. 25

    输入层的TensorFlow Keras尺寸错误

  26. 26

    TensorFlow/Keras:输出层的形状错误

  27. 27

    Keras/Tensorflow 输入到 RNN 层

  28. 28

    值错误:没有这样的层 - 提取 tensorflow keras 层的输出

  29. 29

    TensorFlow和Keras中的度量系统行为

热门标签

归档