tensorflow - Keras:改变步幅似乎并没有改变 conv2d/conv3d 中的参数数量
问题描述
我可能在这里遗漏了一些简单的东西,但是当我更改卷积层中的步数时,我没有得到要拟合的参数数量的相应变化。考虑这些:
from keras import layers as L
x=L.Conv2D(filters=32, kernel_size=(3,3), strides=(1,1),padding='valid')(input)
y=L.Conv2D(filters=32, kernel_size=(3,3), strides=(2,2),padding='valid')(input)
z=L.Conv2D(filters=32, kernel_size=(3,3), strides=(3,3),padding='valid')(input)
我认为 (3,3) 的步幅将在每个维度上放置 3 倍的过滤器,因此要拟合的参数数量相应减少。然而,事实并非如此。
如果我的输入层的大小为 (none,63,143,32)——我给它提供了一个 conv3d 的压缩输出——那么无论步幅如何,卷积的参数数量总是 9248。苏……我错过了什么?
解决方案
卷积过滤器从不依赖于图像的大小、填充、步幅等。
它们仅依赖于kernel_size
和filters
。
它们的形状是:(kernel_size[0], kernel_size[1], input_filters, output_filters)
我建议你阅读这个页面,它解释了很多关于滑动图像的卷积,尽管它们不代表图像中的输入通道。
推荐阅读
- php - 里面有 $_SESSION 的 sql。得到这个:解析错误:语法错误,意外''(T_ENCAPSED_AND_WHITESPACE)
- glfw - GLFW | 什么是上下文?
- python - 基于值返回颜色名称的优雅方式
- angular - Laravel - Symfony\Component\Debug\Exception\FatalThrowableError:语法错误,意外的“如果”(T_IF)
- angular - 使用 ASP.NET Core 3 进行 SPA 身份验证的正确方法是什么?
- flutter - 如何连续添加倒数计时器,当到达零时触发事件?
- c# - 包含枚举描述的发布请求
- sql - MariaDB 中 JSON_OBJECT 中的 JSON 数组处理
- c# - 如何将日期时间转换为长日期?
- python - 为什么pyinstaller找不到win32api的错误属性