tiny_cnn 閱讀(1)


從今天起, 我會每天把閱讀tiny_cnn的閱讀心得提交到博客園中希望大家在這個平台上可以多多交流;

關於如果閱讀代碼? 抓住重點,忽略細節

首先打開從github上下載的文件:

image

通過csdn和網上搜索一番會知道這個文件的各個目錄存放的是什么;

我用${root} 代表到tiny-cnn-master的路徑,這個變量會在注釋中用到;

首先打開vs/2014 ,用MS studio開開這個項目 , 找到main.cpp

發現會調用sample1_convnet()函數 ,如圖1 所示

image

 

圖1 main方法截圖

而我們運行的時候確實沒有輸入任何參數,可見是運行的第45行, 既然是這樣,需要找到無參數的時候調用那個函數?

image

第35行, 我們知道了 sample1_convnet()函數的參數值是data_dir_path = ./../data

這個變量至今還沒有使用到,因此我們不必往下深究 , 只要知道.data_dir_path 是數據所在的路徑即可;

 

》》》進入void sample1_convnet(const string& data_dir_path) 函數里面:

第一句話:

image

 

使我們不得不了解一下這兩個泛型:

mse:

@see: ${root}/tiny_cnn/optimzers/optimizer.h

 

gradient_descent_levenberg_marquardt:

@see: ${root}/tiny_cnn/optimzers/optimizer.h

以上這兩個函數也是沒有用到,但是我們可以查看一下,因為代碼很簡潔

mse:

如圖2-1所示:

在tiny_cnn中支持兩種損失函數:

(1)mean squared error均方差函數

(2)cross entropy 交叉熵

 

通過閱讀代碼可知;

a )這是兩個數學公式轉化過來的:

  f(y,t) =  (y  - t )^2 / 2 

df( y , t ) = y – t   ,  其中 y 和t 理論上都是從負無窮到正無窮的實數

b)該程序使用的自會有mse這一種損失函數 , 如果我們想要修改的或者做改進的話, 也可以從這里入手;

比如換一種損失函數. 改進一下這個函數等等..

image

圖2-1 :mse函數的實現

gradient_descent_levenberg_marquardt:

 

image

network

@see ${root}/tiny_cnn/network.h


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM