我有一个 RGB 彩色图像,我试图使用 conv2d 进行训练。根据 CNN,每个过滤器都应该跨越所有输入 channel 。但是在 TF 中遵循此规则时,我遇到了错误
InvalidArgumentError: Current implementation does not yet support strides in the batch and depth dimensions.
从 this 的讨论来看,TF 似乎只支持 conv2d 中沿输入 channel 的一个增量。所以我的问题是 1. 有什么办法可以跨越 TF 中的多个 channel ? 2. 在 RGB 图像上使用默认步幅(即 1)是否是正确的程序?
最佳答案
在我看来,跨越 批次 或 深度 是没有用的。您的步幅应该类似于 [1,m,n,1]。
首先,让我们从第一维 批次 开始。这些是您的样本,您的图像。跨越你的图像意味着你只会从训练或归纳中删除整个图像。
其次, 深度 第 4 维。最初这是您的 RGB。跨越 RGB 意味着您将完全放弃一两种颜色。那没有意义。这将是大量的信息丢失。
三是大步的目的。当您的图像在您正在分析的内容的像素级别(而不是颜色级别)上进行过采样并且您可以只扔信息时,Stride 会很有用。这是积极的数据破坏。它将高清晰度图像变成中清晰度,将中清晰度图像变成低清晰度。
即使您想对图像进行下采样( stride ),您也不希望破坏 RBG channel ( depth )或整个图像( batch )。
关于python - 如何在 TensorFlow 的 conv2d 中跨越多个 channel ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43790742/