我正在构建 CNN + Ensemble 模型,用于使用 Python 中的 Tensorflow 对图像进行分类。我在谷歌图片上抓取了狗和猫的图像。然后将它们更改为126 * 126像素大小和灰度,为狗添加标签0,为猫添加标签1。 CNN 有 5 个 conv 层和 2 个 fc 层。模型中使用了 HE、PReLU、max-pooling、drop-out、Adam。当参数调优完成后,我添加了 Early-Stopping,模型学习了 65~70 epoch,最终达到 92.5~92.7% 的准确率。 学习完成后,我想将我的CNN模型更改为VGG网络,我检查了我的CNN参数,令人震惊的是,我发现我没有在转换层添加Bias。 2 个 fc 层有偏差,但 5 个 conv 层没有偏差。所以我在 5 个卷积层添加了 Bias,但我的模型无法学习。成本增加到无限。
偏差不一定在深度卷积层?
最佳答案
你是如何将偏差添加到卷积层的?有两种方法可以做到这一点:绑定(bind)偏差(每个内核共享一个偏差)和非绑定(bind)偏差(每个内核和输出使用一个偏差)。另请阅读this .
关于您的问题是否有必要,答案是不需要。卷积层中的偏差增加了模型的容量,使其理论上能够表示更复杂的数据。然而,如果您的模型已经具备执行此操作的能力,则不需要它们。
一个例子是 this 152 层 ResNet 架构的实现,其中卷积层没有偏差。 相反,偏差会添加到后续的批量归一化层中。
关于tensorflow - Bias一定需要卷积层吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45134831/