1. 程式人生 > >【小白學PyTorch】13 EfficientNet詳解及PyTorch實現

【小白學PyTorch】13 EfficientNet詳解及PyTorch實現

參考目錄: [TOC] 文章來自微信公眾號【機器學習煉丹術】。我是煉丹兄,如果有疑問或者想要和煉丹兄交流的可以加微信:cyx645016617. efficientNet的論文原文連結: https://arxiv.org/pdf/1905.11946.pdf **模型擴充套件Model scaling一直以來都是提高卷積神經網路效果的重要方法。** 比如說,ResNet可以增加層數從ResNet18擴充套件到ResNet200。這次,我們要介紹的是最新的網路結構——EfficientNet,就是一種標準化的模型擴充套件結果,通過下面的圖,我們可以i只管的體會到EfficientNet b0-b7在ImageNet上的效果:**對於ImageNet歷史上的各種網路而言,可以說EfficientNet在效果上實現了碾壓** ![在這裡插入圖片描述](//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8983b36a6cfc48e594d1084cd3579e45~tplv-k3u1fbpfcp-zoom-1.image) ## 1 EfficientNet ### 1.1 概述 一般我們在擴充套件網路的時候,一般通過調成輸入影象的大小、網路的深度和寬度(卷積通道數,也就是channel數)。在EfficientNet之前,沒有研究工作只是針對這三個維度中的某一個維度進行調整,因為**沒錢啊!!有限的計算能力**,很少有研究對這三個維度進行綜合調整的。 EfficientNet的設想就是能否設計一個標準化的卷積網路擴充套件方法,既可以實現較高的準確率,又可以充分的節省算力資源。因而問題可以描述成,如何平衡解析度、深度和寬度這三個維度,來實現拘拿及網路在效率和準確率上的優化 EfficientNet給出的解決方案是提出了這個**模型複合縮放方法** (compound scaling methed) ![在這裡插入圖片描述](//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/5563f39285a547998caafbbadffc6dad~tplv-k3u1fbpfcp-zoom-1.image)圖a是一個基線網路,也就是我們所說的baseline,圖b,c,d三個網路分別對該基線網路的寬度、深度、和輸入解析度進行了擴充套件,而最右邊的e圖,就是EfficientNet的主要思想,綜合寬度、深度和解析度對網路進行符合擴充套件。 ### 1.2 把擴充套件問題用數學來描述 首先,我們把整個卷積網路稱為N,他的第i個卷積層可以看作下面的函式對映: ![在這裡插入圖片描述](//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f00a5182e1734bd481dce07f9a33c5a0~tplv-k3u1fbpfcp-zoom-1.image) Yi是輸出張量,Xi是輸入張量,假設這個Xi的