为什么slim.nets.vgg使用conv2d而不是fully_connected图层?

时间:2017-02-05 13:40:38

标签: tensorflow

在tensorflow / models / slim / nets中,这是vgg的相对片段的链接。我很好奇为什么slim.nets.vgg使用conv2d而不是full_connected图层,虽然它实际上以相同的方式工作?这是为了速度吗? 我很感激一些解释。谢谢!

1 个答案:

答案 0 :(得分:1)

过了一段时间,我认为至少有一个原因可以避免权重转换错误。

Tensorflow / slim以及其他高级库允许张量格式默认为BHWC(batch_size,height,width,channel。相同如下)或BCHW(为了更好的性能)。< / p>

在这两种格式之间转换权重时,第一个fc(完全连接的图层,在转换图层之后)的权重[in_channel, out_channel]必须重新转换为[last_conv_channel, height, width, out_channel],然后转换为[height, width, last_conv_channel, out_channel]并重新改编为[in_channel, out_channel]

如果你使用conv权重而不是完全连接的权重,这种转换将明确地应用于fc层(实际上是conv权重)。当然会避免转换错误。