栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

关于Tensorflow中padding细节

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于Tensorflow中padding细节

问题描述

feature map的卷积和池化后的shape计算公式为:(W - kernel_size +2*p)/strides +1,当除法部分不能整除时需要进行舍入,对向上取整还是向下取整进行探讨。

测试

输入图像为RGB三通道,input_shape=(300,300,3)

APIpaddingstrideskernel_size执行前shape执行后shape理论计算shape
Conv2D‘valid’13300298297+1
Conv2D‘valid’23300149148.5+1,推出向下取整
Conv2D‘same’13300300300,推出p=1
Conv2D‘same’23300150149.5+p,推出向下取整且p=1
Maxpooling2D‘valid’13300298297+1
Maxpooling2D‘valid’23300149148.5+1,推出向下取整
Maxpooling2D‘same’13300300300,推出p=1
Maxpooling2D‘same’23300150149.5+p,推出向下取整且p=1
结论

无论是Conv2D还是Maxpooling2D:
1.取整都是向下取整
2.‘same’时,p都为1
如有错误欢迎指正。

测试代码
import tensorflow as tf


class TestModel(tf.keras.Model):

    def __init__(self, shape):
        super(TestModel, self).__init__()
        self.w, self.h, self.c = shape
        self.input_layer = tf.keras.layers.Input(shape=(self.w, self.h, self.c))
        # self.conv1 = tf.keras.layers.Conv2D(3, kernel_size=3, strides=2, padding='same')
        self.max_pool = tf.keras.layers.MaxPooling2D(3,strides=2,padding='same')
        self.out_layer = self.call(self.input_layer)

    def build(self, input_shape=None):
        super(TestModel, self).build(input_shape=(None, self.w, self.h, self.c))

    def call(self, inputs, training=None, mask=None):
        # x = self.conv1(inputs)
        x = self.max_pool(inputs)
        return x


if __name__ == '__main__':
    my_model = TestModel(shape=(300, 300, 3))
    my_model.build()
    my_model.summary()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/588634.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号