跟着這位博主來學習C++的卷積網絡實例,因為作者一直在更新代碼,所以新的代碼和這位博主的分析有所不同;這位博主寫的東西太泛了,沒有講到實質,
可以參考下他分析的類與類之間的關系圖。。
前四節:http://blog.csdn.net/u013088062/article/details/50839015
http://blog.csdn.net/u013088062/article/details/50850459 (在運行代碼時,新的代碼不需要添加各種庫就可以運行了,非常方便)
http://blog.csdn.net/u013088062/article/details/50859012 講的是層間的繼承關系,對整體理解代碼很有幫助。
http://blog.csdn.net/u013088062/article/details/50866217分析了卷積層convolutional_layer這個類,不過新的代碼有了點變化。
首先是變量的變化,新增了變量padding,解釋是四舍五入策略,當其類型是valid時,只使用輸入的有效像素,輸出大小為output-size = (in-width - window_size + 1) * (in-height - window_size + 1) * out_channels;當其類型為same時,增加zero-padding ,使得輸出大小為 output-size = in-width * in-height * out_channels。
構造函數的變化,新的代碼一共定義了四個構造函數,其實區別並不大。前兩個和后兩個構造函數唯一的區別就是在傳遞卷積核大小時的方式不同。
對於前兩個構造函數,采用的是默認的全零矩陣,即全連接模式。
后兩個構造函數中connection_table常量人為指定與前一層的連接方式,
另外新的代碼中,convolutional_layer類是公有繼承自layer類的
首先看類layer.h文件。其中定義了兩個類,虛基類layer_base,以及子類layer。
layer_base中定義了大量的初始化函數