如何在CNTK中使用SqueezeNet?

How to use SqueezeNet in CNTK?

我是 CNTK 用户。我使用 AlexNet,但想要一个更紧凑的神经网络——所以 SqueezeNet 似乎很有趣。或者有人有其他建议吗?当大小很重要时,CNTK 用户如何部署?有人有 SqueezeNet 的 CNTK 实现吗?

SqueezeNet 是小型网络的不错选择,具有良好的准确性。查看 DSDSqueezeNet 以获得更高的准确性。 但是,如果它不需要像 SqueezeNet 一样小,您也可以看看 MobileNet or NasNet Mobile。这些网络可能更大,但它们在图像分类任务中提供了最先进的性能。

不幸的是,我没有 SqueezeNet 的 CNTK 实现,但可能是预训练的 CNTK 模型,您可以使用 Transfer Learning is all what you are looking for. In this case I can recommend you MMdnn, a conversion tool, which allows to convert a existing pretrained Caffe network to the CNTK model format. In this issue 重用和微调您可以找到 SqueezeNet 的分步指南。

我不知道有什么方法可以用于特别小的部署,但在保存模型时基本上有两种选择:标准 CNTK 模型格式和新的 ONNX format which CNTK is going to support or does already. 直到现在,我还不知道自己尝试一下,但也许它为同一网络提供更小的尺寸。 由于 CNTK 模型格式已经将模型保存为二进制格式,因此我不希望对任何格式有很大的改进。无论如何,如果尺寸非常重要,最终压缩模型可能是一种选择。

新的 ONNX model 格式现在有几个预训练视觉模型,包括一个用于 SqueezeNet 的模型。您可以下载模型并将其加载到 CNTK 中:

import cntk as C
z = C.Function.load(<path of your ONNX model>, format=C.ModelFormat.ONNX)  

您可以在 CNTK here.

中找到 importing/exporting ONNX models 的教程