tensorflow學(xué)習(xí)心得

由于參加了天池阿里云的比賽的原因,所以開始利用自己的業(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í)資料。

吐槽+心得

  1. TensorFlow相當(dāng)于一個(gè)python的接口,本質(zhì)上還是C的內(nèi)核。所以在python中操作時(shí),需要把很多東西重新包裝成一個(gè)合適的Object。所以出現(xiàn)了tf.Variable tf.placeholder等等的東西。
  2. 正如如上所說,除了對(duì)象需要重新構(gòu)造。Kernel或者說運(yùn)行界面當(dāng)然也需要一個(gè)新的,所以出現(xiàn)了tf.Session
  3. Activation funciton,有翻譯成激勵(lì)函數(shù)、激活函數(shù),但實(shí)際上并不是去激活什么東西。僅僅是為了給線性的模型加入非線性的變化。例如Relu(Rectified Linear Unit, ReLU),有很多變式,但最基礎(chǔ)的就是new_x = max(0,x)
  4. tf.get_variabletf.Variable差別還挺大,建議使用第一個(gè)。區(qū)別見reference第4條
  5. 關(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

  1. 個(gè)人認(rèn)為較好的教程,適合剛接觸Tensorflow的人,可以較快理解其基礎(chǔ)
  2. Tensorfly的中文社區(qū)的文章,很多人都從這里的教程出發(fā),但是這里的教程對(duì)完全的初學(xué)者實(shí)在不友好,像我吐槽中的1,2條都不知道就會(huì)很迷惑。但是這個(gè)感知機(jī)之類的理論基礎(chǔ)說的還可以
  3. 激勵(lì)函數(shù)的形象介紹,特指最多贊的那個(gè),例子非常得到直觀,也間接回答了為什么激勵(lì)函數(shù)可以加入非線性因素,理解了例子可以外推
  4. tensorflow學(xué)習(xí)筆記(二十三):variable與get_variable
  5. RNN與LSTM的簡單介紹
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容