Winograd快速卷積算法,能夠實現3x3或5x5 Conv2D的有效加速,具體可參考Intel的介紹:https://ai.intel.com/winograd-2/
"Efficient Sparse-Winograd Convolutional Neural Networks"這篇文章將ReLU引入到Winograd域,獲得了Activations在Winograd域的動態稀疏度,並在Winograd域對權重剪枝,獲得了權重在Winograd域的靜態稀疏度,進而將Winograd變換與網絡剪枝相結合,有效實現了稀疏加速:
該算法的優點:用CUDA自定義了底層TensorFlow OP,支持3x3 Conv2D(stride=1);缺點:主要存在一定的侷限性,首先需要藉助pooling實現降採樣,其次暫不支持其他尺寸的Conv2D,且權重定義在winograd域,不方便預訓練模型的使用,通常需要train from scratch(裸訓),收斂速度較慢。
基於Sparse-Winograd CNN,Resnet18在ImageNet 2012上的訓練過程如下(TensorPack作爲訓練平臺):
詳細內容請參考如下鏈接:
Paper地址:https://arxiv.org/abs/1802.06367