由于參加了天池阿里云的比賽的原因,所以開始利用自己的業(yè)余時(shí)間開始研究機(jī)器學(xué)習(xí)的東西。機(jī)器學(xué)習(xí)的原理學(xué)了不少,所以利用python基本上也可以handle Machine Learning的東西,但是后來發(fā)現(xiàn)ML取得的成績并不是很好,所以說我開始在有著機(jī)器學(xué)習(xí)的基礎(chǔ)上去研究deep learning。
雖然很多人都說TensorFlow并不是很好學(xué),比較晦澀難懂,導(dǎo)致了很多想Keras、tflearn的擴(kuò)展包或者高級(jí)擴(kuò)展庫的出現(xiàn),簡化了許多Tensorflow的東西,但是我覺得個(gè)人的基礎(chǔ)還算可以,也喜歡挑戰(zhàn),于是直接上手了Tensorflow。
以下簡單記載學(xué)習(xí)心得并且加上學(xué)習(xí)資料。
吐槽+心得
- TensorFlow相當(dāng)于一個(gè)python的接口,本質(zhì)上還是C的內(nèi)核。所以在python中操作時(shí),需要把很多東西重新包裝成一個(gè)合適的Object。所以出現(xiàn)了
tf.Variable tf.placeholder
等等的東西。 - 正如如上所說,除了對(duì)象需要重新構(gòu)造。Kernel或者說運(yùn)行界面當(dāng)然也需要一個(gè)新的,所以出現(xiàn)了
tf.Session
-
Activation funciton
,有翻譯成激勵(lì)函數(shù)、激活函數(shù),但實(shí)際上并不是去激活什么東西。僅僅是為了給線性的模型加入非線性的變化。例如Relu(Rectified Linear Unit, ReLU),有很多變式,但最基礎(chǔ)的就是new_x = max(0,x)
。 -
tf.get_variable
與tf.Variable
差別還挺大,建議使用第一個(gè)。區(qū)別見reference第4條 - 關(guān)于Variable,我們要時(shí)刻記住Python僅僅是一個(gè)接口,這就意味著,當(dāng)我們定義并賦值一個(gè)tf內(nèi)的變量時(shí),雖然我們以為我們重新賦值就可以覆蓋,但其實(shí)不。tf內(nèi)部會(huì)存在定義過的變量。所以要小心的使用三種定義方式。
tf.placeholder(); tf.Variable() ;tf.get_variable();
Reference
- 個(gè)人認(rèn)為較好的教程,適合剛接觸Tensorflow的人,可以較快理解其基礎(chǔ)
- Tensorfly的中文社區(qū)的文章,很多人都從這里的教程出發(fā),但是這里的教程對(duì)完全的初學(xué)者實(shí)在不友好,像我吐槽中的1,2條都不知道就會(huì)很迷惑。但是這個(gè)感知機(jī)之類的理論基礎(chǔ)說的還可以
- 激勵(lì)函數(shù)的形象介紹,特指最多贊的那個(gè),例子非常得到直觀,也間接回答了為什么激勵(lì)函數(shù)可以加入非線性因素,理解了例子可以外推
- tensorflow學(xué)習(xí)筆記(二十三):variable與get_variable
- RNN與LSTM的簡單介紹