【问题标题】:Keras layer shape in plot_model()plot_model() 中的 Keras 图层形状
【发布时间】:2018-04-22 16:45:13
【问题描述】:

我正在使用 Keras 制作 CNN,我想用 plot_model() 可视化模型。

当我查看Conv2d 层的形状时,有一点我想不通。

假设我的Conv2d 层的内核大小为[8 x 8],步幅为[4 by 4],填充为'same',我想要16 个特征图。

该层的输入形状为[None, 3, 160, 320],输出为[None,1,40,16]

'None' 是样本,但 1 和 40 是什么?我猜 16 是特征图的数量?

既然我实现了padding = 'same',那么输出的图像大小不应该与输入的宽度和高度相同,还是这不一样?

谢谢!

【问题讨论】:

    标签: keras conv-neural-network


    【解决方案1】:

    好吧,既然您使用的是“步幅”,那么您将永远不会拥有相同的形状。

    您的卷积滤波器(可以看作是一个滑动窗口)在其滑动过程中跳跃了四个像素。

    因此,您得到的最终形状除以 4(并四舍五入)。

    • 3/4 向上取整 = 1
    • 160/4 = 40
    • 16 确实是特征图的数量。

    【讨论】:

    • 原始图像输入数据为[None, 3, 160, 320],即[Samples, Color depth, height, width]。我是否在错误的维度上应用卷积?这是否表明内核正在深度 x 高度平面中移动?内核不应该在高度 x 宽度维度上移动吗?
    • 是的,这表明您的尺寸是倒置的。 Keras 标准 data_format'channels_last': (samples, height, width, channels)。注意最后一个位置的16 features
    • 您可以通过在图层中添加data_format='channels_first' 或更改<user folder>\.keras\keras.json 文件中的全局设置来更改此设置。 --- 'channels_last' 在使用最后一个维度的某些分类问题、损失和激活方面有一些优势。
    • 这是否也意味着Comma.ai's open project 没有按预期工作?
    • 我不知道这个项目。但是每个图书馆都有自己的格式。一些图像加载器已经最后打开带有通道的图像。
    猜你喜欢
    • 2019-01-08
    • 1970-01-01
    • 2021-06-05
    • 2021-06-25
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    相关资源
    最近更新 更多