clw*_*wen 3 neural-network conv-neural-network keras
我试图遵循本教程 https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html
在基线模型中它有
model.add(Conv2D(32, (3, 3), input_shape=(3, 150, 150)))
我不太了解这里的输出形状。如果输入形状为 3x150x150,内核大小为 3x3,那么输出形状不是 3x148x148 吗?(假设没有填充)。然而,根据 Keras 文档:
输出形状:4D 张量,形状:(batch、filters、new_rows、new_cols)
在我看来,输出形状将是 32x148x148。我的问题是这种理解是否正确?如果是这样,额外的过滤器从哪里来?
如果输入形状为(3, 150, 150),则应用 Conv2D 层后输出为(?, 32, 148, 148)。通过以下示例检查一下:
inps = Input(shape=(3, 150, 150))
conv = Conv2D(32, (3, 3), data_format='channels_first')(inps)
print(conv)
>> Tensor("conv2d/BiasAdd:0", shape=(?, 32, 148, 148), dtype=float32)
Run Code Online (Sandbox Code Playgroud)
?是批量大小。32)。148)。通道如何从 3 变为 32?假设我们有 RGB 图像(3 个通道)并且输出通道大小为 1。会发生以下情况:
当您使用filters=32和时kernel_size=(3,3),您将创建 32 个不同的过滤器,每个过滤器的形状为 (3,3,3)。结果会带来32个不同的卷积。请注意,根据Keras 的glorot_uniform说法,所有内核都在开始时初始化。
图片来自这篇博文。
| 归档时间: |
|
| 查看次数: |
6661 次 |
| 最近记录: |