如何在CNTK中使用SqueezeNet?

时间:2018-01-11 00:15:37

标签: cntk

我是CNTK用户。我使用AlexNet但想要更紧凑的NN - 所以SqueezeNet似乎很有意思。或者有人有其他建议吗?当尺寸重要时,CNTK用户如何部署?有人有CNTK实施的SqueezeNet吗?

2 个答案:

答案 0 :(得分:0)

SqueezeNet是小型网络的理想选择,具有良好的准确性。请查看DSDSqueezeNet以获得更高的准确性。 但是,如果它不需要像SqueezeNet那么小,您还可以查看MobileNetNasNet Mobile。这些网络可能更大,但它们在图像分类任务中提供了最先进的性能。

不幸的是,我没有SqueezeNet的CNTK实现,但可能是一个预训练的CNTK模型,您可以使用Transfer Learning重用和微调,这正是您所需要的。在这种情况下,我可以向您推荐一种转换工具MMdnn,它允许将现有的预训练Caffe网络转换为CNTK模型格式。在this issue中,您可以找到SqueezeNet的分步指南。

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

答案 1 :(得分:0)

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

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

您可以在CNTK here中找到导入/导出ONNX models的教程。