如何在TensorFlow的conv2d中跨越多个频道?

时间:2017-05-04 18:53:58

标签: python python-3.x tensorflow conv-neural-network

我有一个RGB彩色图像,我试图用conv2d训练。根据CNN,每个滤波器应跨越所有输入通道。但是在TF中遵循这个规则时我得到了一个错误

InvalidArgumentError: Current implementation does not yet support strides in the batch and depth dimensions.

this讨论来看,TF似乎只支持conv2d中输入通道的一个增量。所以我的问题是 1。有什么方法可以在TF中跨越多个频道吗?
2。使用默认步幅(即1)而不是RGB图像是否正确?

1 个答案:

答案 0 :(得分:5)

在我看来,跨越批次深度是没有用的。你的步伐应该是[1,m,n,1]。

首先,让我们从第一个维度批次开始。这些是您的样本,您的图像。跨过你的图像意味着你只是从训练或归纳中删除整个图像。

第二,深度第四维度。最初这是你的RGB。跨越RGB将意味着您只需完全丢弃一两种颜色。这没有意义。这将是大量的信息丢失。

第三,迈向大步的目的。当您的图像是您正在分析的像素级别(而不是颜色级别)的过采样时,步幅可能很有用,只需抛掷信息就可以了。这是积极的数据破坏。它将高清图像转换为中等清晰度,将中等清晰度转换为低清晰度。

即使您想对图像进行缩减采样,您也不想破坏RBG频道(深度)或整个图像(批量)( stride )。