原创 Vivado HLS(High-level Synthesis)筆記五:for循環優化

一. 基本性能指標 for循環優化的基本概念、對for循環施行流水的優化、for循環的展開以及for循環的循環變量的數據類型是否對結果資源有影響 1. 流水線優化 2. for循環的展開 默認情況下for循環是被摺疊的,所謂摺

原创 Vivado HLS(High-level Synthesis)筆記八:優化方法綜述

一. Optimizing for Throughout 改變吞吐率是通過提高並行度實現的; Pipeline可以作用於函數,也可以作用於循環,當其作用於函數時是連續的,作用於循環時中間有停頓; 二. Optimizing fo

原创 Vivado HLS(High-level Synthesis)筆記六:數組優化

一. 數組分割 對於數組可以resource directive來明確告知HLS當前數組採用什麼樣的Memory(RAM、FIFO等)來實現,如果沒有使用resource,Vivado HLS會自行決定採用單端口還是雙端口(取決於

原创 Vivado HLS(High-level Synthesis)筆記四:接口綜合

一. 基本介紹 接口綜合的結果有兩種類型的接口:Block-level interface protocol和Port-level interface protocol。 1. Block-level interface proto

原创 Toward Extremely Low Bit and Lossless Accuracy in DNNs with Progressive ADMM

論文題目:Toward Extremely Low Bit and Lossless Accuracy in DNNs with Progressive ADMM 使用漸進式ADMM(交替方向乘子法)實現DNN中極低的位和無損

原创 Vivado HLS(High-level Synthesis)筆記一:HLS基本流程

前言 實驗室項目需要,需要將在服務器段跑出的網絡參數配置到FPGA上,一種方法是直接利用verilog或者vhdl直接去寫一個網絡的前向傳播模型,另一種就是用 C/C++ 來描述網絡的前向傳播模型,然後利用Vivado的HLS將其轉化

原创 Vivado HLS(High-level Synthesis)筆記三:Test bench

一. C/C++ Test bench的基本架構 Test bench是一個用來驗證邏輯功能是否正確的虛擬壞境,由Driver/Stimulus(輸入激勵)、Reference Model(參考模型,其輸出結果是正確結果)、DUT

原创 Vivado HLS(High-level Synthesis)筆記二:數據類型及其初始化、複合數據類型、HLS中的C++基本運算

一. 如何處理任意精度的數據類型 C語言支持的數據類型有字符型、整型(有符號和無符號)、浮點型、boolean類型等的,需要注意的是char 16_t和char 30_t這兩個數據類型在Vivado HLS中是不支持的; Viva

原创 XNOR-Net論文解讀

論文地址:https://arxiv.org/abs/1603.05279 代碼地址:http://allenai.org/plato/xnornet Abstract 我們提出了兩種對標準卷積神經網絡的高效近似:Binary-Wei

原创 Soft Filter Pruning(SFP)論文解讀

論文地址:https://arxiv.org/abs/1808.06866 GitHub:https://github.com/he-y/soft-filter-pruning Abstract 這篇論文提出了SFP(Soft Fil

原创 Pruning Filters For Efficient ConvNets論文解讀

論文鏈接:https://arxiv.org/abs/1608.08710 Abstract CNN在不同應用中取得的成功伴隨着參數存儲成本和計算量的增加,最近朝着減少這些花銷的努力涉及到剪枝和壓縮不同層的權重,並且是在不損傷精度的條

原创 PyTorch 學習筆記(八):圖像增強、ResNet完成Cifar10分類

一. 圖像增強的方法 一直以來,圖像識別這一計算機視覺的核心問題都面臨很多挑戰,同一個物體在不同情況下都會得出不同的結論。對於一張圖片,我們看到的是一些物體,而計算機看到的是一些像素點。 如果拍攝照片的照相機位置發生了改變,那麼拍得的

原创 PyTorch 學習筆記(三):線性迴歸、logistic迴歸

通過前面兩篇筆記的學習已經基本瞭解了PyTorch裏面的基本處理對象、運算操作、自動求導、以及數據處理方法、模型的保存和加載等基礎知識。下來就是實戰部分了。 一. 線性迴歸 1. 一維線性迴歸 給定數據集 D={(x1,y1),(x2

原创 PyTorch 學習筆記(五):多層全連接網絡實現MNIST手寫數字分類

先來介紹幾個比較重要的函數 1. torch.nn.CrossEntropyLoss()函數 交叉熵損失函數,在pytorch中若模型使用CrossEntropyLoss這個loss函數,則不應該在最後一層再使用softmax進行激活

原创 PyTorch 學習筆記(四):激活函數對比、權重初始化、防止過擬合的方法

一. 激活函數 如果不用激活函數,每一層輸出都是上層輸入的線性函數,無論神經網絡有多少層,輸出都是輸入的線性組合。如果使用的話,激活函數給神經元引入了非線性因素,使得神經網絡可以任意逼近任何非線性函數,這樣神經網絡就可以應用到衆多的非