Tensorflow 为什么slim.nets.vgg使用conv2d而不是完全连接的层?

Tensorflow 为什么slim.nets.vgg使用conv2d而不是完全连接的层?,tensorflow,Tensorflow,在tensorflow/models/slim/nets中,以下是相关代码片段的链接。我很好奇为什么slim.nets.vgg使用conv2d而不是完全连接的层,尽管它的工作原理实际上是相同的?是为了提高速度吗? 我感谢你的解释。谢谢 过了一段时间,我认为至少有一个原因可以避免权重转换错误 Tensorflow/slim以及其他高级库允许默认情况下使用tensor格式BHWC(批次大小、高度、宽度、通道。如下所示)或BCHW(以获得更好的性能) 在这两种格式之间转换权重时,必须将第一个fc(完全

在tensorflow/models/slim/nets中,以下是相关代码片段的链接。我很好奇为什么slim.nets.vgg使用conv2d而不是完全连接的层,尽管它的工作原理实际上是相同的?是为了提高速度吗?
我感谢你的解释。谢谢

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

Tensorflow/slim以及其他高级库允许默认情况下使用tensor格式
BHWC
(批次大小、高度、宽度、通道。如下所示)或
BCHW
(以获得更好的性能)

在这两种格式之间转换权重时,必须将第一个fc(完全连接的层,在转换层之后)的权重
[输入通道,输出通道]
重塑为
[最后一个转换通道,高度,宽度,输出通道]
,然后转换为
[高度,宽度,最后一个转换通道,输出通道]
并再次重塑为
[输入通道,输出通道]


如果您使用conv权重而不是完全连接的权重,这种转换将显式应用于fc层(实际上是conv权重)。当然可以避免转换错误。

是的,这是slim源代码中的“注意:所有完全连接的层都已转换为conv2d层”。我想知道为什么。。。