链接: https://www.kaggle.com/c/diabetic-retinopathy-detection/discussion/15617
Github: https://github.com/sveitser/kaggle_diabetic
您好,我是 CNN 新手,最近正在研究这个解决方案。作者画了一张他的小组设计的网络的表格。单位、过滤器和步幅对我来说都有意义,但我只是不知道“大小”意味着什么。它更可能意味着批量大小还是图像大小?
一开始我认为应该是图像大小,但有两个原因不应该:
正如他们在报告中所述,他们只是将原始图像裁剪为 128x128,256x256,512x512 像素,并且没有进行任何其他图像预处理。
阅读他们的代码(来自 Github 链接)后,我发现他们的 InputLayer 设置是:
(InputLayer, {'shape': (None, 3, cnf['w'], cnf['h'])}),
这证实了他们的竞争报告中的描述。
因此,我认为输入大小应该是3x128x128,而不是448。
这是我的问题:
1.如果输入图片尺寸不是448,那么448是什么意思?
2.如果这意味着批量大小,为什么他们会选择 448?和
3.为什么他们会让批量大小从第 1 层到第 19 层减小(基本上是/2)到 224 111 56 27 13 6 2?
最佳答案
linked table 的大小列指层中激活的垂直和水平维度。
这些是存储库中表格中网络的完整配置:
这两个输入的宽度和高度都是448,即。输入层的大小为448。
我们可以使用以下公式来计算卷积层激活的垂直和水平维度:
ACTIVATION_SIZE = (INPUT_SIZE − FILTER_SIZE + PADDING_PREV + PADDING_AFTER) / STRIDE + 1
我们可以从上面链接的网络配置中获取输入大小、过滤器大小和步幅参数。由于他们使用烤宽面条的早期开发版本,因此很难准确辨别他们使用的填充类型,因此我们必须在那里做出一些假设。
对于网络 A:
INPUT_SIZE = 448
FILTER_SIZE = 5
STRIDE = 2
如果 PADDING_PREV = 2
且 PADDING_AFTER = 1
(反之亦然),则使用上面的公式,激活大小将解析为 224。由于根据他们的表,第一个卷积层的大小为 224,因此我们可以非常确定我们正确地解释了参数。
对于网络 B:
INPUT_SIZE = 448
FILTER_SIZE = 4
STRIDE = 2
如果两个填充均为 1,则激活大小将为 224,如表中所示。
总之,作者报告了 512x512 图像的网络架构,并省略了将这些图像调整为 448x448 分辨率以及如何应用填充的细节。这是计算机视觉社区的惯例,人们总是可以依靠上面的公式来验证这些细节。
关于machine-learning - "size"在 kaggle 糖尿病视网膜病变检测第二名解决方案神经网络中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51945485/