2021年8月9日 星期一

Build qt project with Command Prompt

Open Qt console window

1.    c:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat amd64

2.    (if there is no *.pro) qmake -project

3.    qmake *.pro (Create Makefile.*)

4.    c:\Qt\Qt5.13.0\Tools\QtCreator\bin\jom.exe -j 4 -f Makefile.Release

2021年8月3日 星期二

[IT邦文章] 如何決定 NN中 hidden layer 數以及每層的 neurons?

 https://ithelp.ithome.com.tw/questions/10195758


高手回答:

閒聊,關鍵其實不是你講的那些參數,
而是模型在 testing data 上面的表現到底怎麼樣?(這是一句幹話)
理論上,我說理論上,隱藏層越多越好啊、神經元越多越好啊,但跑得動嗎?
同時還得考量若要達到特定數字的epoch所耗的時間喔~


機器學習的本質,在於探索某個特定範圍的變數,
然後嘗試找出最佳的參數,好讓 training data 的正確率趨近100%,或誤差接近0。
再運用相同的模型去看 testing data 有沒有相同的效果,是否過擬。

但在做上面這件事情時......
機器學習本身你所採用的那個學習方法,所使用的參數內容,卻是你給定的。
所以這邊延伸出一件很哲學的事情:

是不是應該弄一套更大的機器學習,去決定一套機器學習的參數該如何訂定?
是不是應該弄一套又更大的機器學習,去決定那套更大的機器學習的參數如何訂定?

所以你就知道,這種層層堆疊的「尋找最佳參數」的過程,是無止盡的,
換句話說,在硬體技術有更顯著的突破之前,這個哲學議題是大哉問,無解的。

話說回來,目前實務上了不起能做到的,是讓機器學習自己本身嘗試不同的參數,
最後將所有的結果做比較之後,返回一個最佳設定的機器學習參數,
同時告訴你這參數之下,在該份data的最佳模型(參數)是什麼。

但縱使如此,我們也只會嘗試某幾個特定的數字,
例如隱藏層跑[3,4,5]層、神經元跑[2,3,4,5,6]個,之類的,
但光是如此,那個運作時間就已經是會跑到懷疑人生的狀態。

所以應該這樣問,在你已經用極短的時間嘗試出90%的模型正確率時,
你還願意花上200倍的時間,去增加僅僅1%的正確率嗎?
這是邊際效益的問題,也是沒有人去做「尋找最佳參數」的原因。

那到底第一時間拿到資料到底該用什麼參數?直覺之外,就剩下經驗累積了吧。