我目前正在尝试了解TensorFlow附带的Inception-V3网络的实现:
[1] https://github.com/tensorflow/models/blob/master/inception/inception/slim/inception_model.py
[2] https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/slim/python/slim/nets/inception_v3.py
这两个实现都是在TensorFlow上使用Slim编写的。
虽然两种实现背后的体系结构似乎几乎相同(除了最后一层的细微差别,它是flatten + fcl
与conv(1x1) + flatten
),但与原始{{3}相比存在一些差异。我无法弄清楚......
conv3: conv([1, 1], 80, stride = 1, pad = 'valid')
conv4: conv([3, 3], 192, stride = 1, pad = 'valid')
pool2: pool([3, 3], stride = 2 )
35 x 35 x 192
的输出。
conv3: conv([3, 3], 80, stride = 1, pad = 'valid')
conv4: conv([3, 3], 192, stride = 2, pad = 'valid')
conv5: conv([3, 3], 288, stride = 1, pad = 'same' )
35 x 35 x 288
的输出。
3x Inception type-5
5x Inception type-6
2x Inception type-7
3x Inception type-5
1x Inception type-10
4x Inception type-6
1x Inception type-10
2x Inception type-7
Inception type-10
模块彼此不同。但我认为这篇论文在某处提到过。
Inception type-5
模块的架构应该与vanilla Inception模块相同(如在#34; Going Deeper"论文中),{{1除外卷积,它被分解为两个堆叠的[5 x 5]
卷积。
[3 x 3]
卷积都被两个堆叠的[3 x 3]
卷积所取代,保持[3 x 3]
卷积。
那么,我错过了一些明显的东西吗?在阅读论文或代码时我是不是很草率?这是艺术自由吗?还是某种神奇的事情发生了?
的更新
在通过paper将两个Slim模型与Keras模型进行比较时,我发现了一个神秘的" model.txt"。其他一些Stack Overflow线程指向"重新思考Inception"的arxiv页面。论文,可以在其他资源中找到它(下载链接:[5 x 5]
)。
所以我想我只会使用" model.txt"中的描述。文件。
但是,我仍然希望对这些差异进行彻底的解释。