莫烦PYTHON | Tensorflow教程——Tensorflow简介(第一章)
教程食用感受:如果你偶然翻到了這篇文章,那么就看一下我對這個系列教程的感受吧,首先就是講的太磨嘰,第二是備課不足,第三講的不透徹。。。尤其是后面的高階部分,我覺得還不如看書,所以我不建議看這套教程。。我是看不動了。。當然莫煩老師個人水平可能很高,但是講課水平真的不高,個人感受,勿噴。
本筆記基于莫煩python的tensorflow教程
1.1 科普:人工神經網絡VS生物神經網絡
生物神經網絡:人的神經網絡由900億個神經細胞組成,我們完成/學習一項動作其實就是一個記憶過程,對于一件沒有接觸過的事情我們負責這塊事情的神經元其實不是連接起來的,當我們開始做了這件事,神經元開始產生聯結,記憶形成,就變成了一塊流通的神經網絡。
人工神經網絡:所有的神經元之間的連接都是固定不可更改的,不會產生新的連接。人工神經網絡典型的學習方式就是,例如一個新生嬰兒學習向家長要糖吃糖這件事,我已經知道吃糖果這件事,并且能夠進行正確的反饋,但是我想讓人工神經網絡幫助我做這件事,所以我準備好很多吃糖果的數據集,通過輸出進行訓練,最后到輸出,看輸出的動作是不是討糖,進而修改神經網絡中的神經元的強度(反向傳播回去),這種修改叫做“誤差反向傳遞”,觀察這個負責傳遞信號的神經元到底其沒有起到作用,爭取下次做出更好的貢獻。
區別:人工神經網絡不產生新連接,靠的是正向和反向傳播來不斷的更新神經元,從而訓練出一個好的神經系統,而這個神經系統其實就是一個讓計算機處理的可優化的數學模型;而生物神經網絡是通過刺激,產生新的連接形成通路而進行反饋。
1.2 什么是神經網絡
神經網絡如何從經驗中學習呢?
神經網絡的訓練結果有對有錯,對于錯誤的結果,神經網絡會對比正確答案與錯誤答案之間的區別,然后把這個區別反向傳遞回去,對每個神經元進行一點點的改變,下次就用修改之后的神經元進行更準確的訓練。
神經網絡如何訓練呢?
每個神經元都有屬于他自己的激活函數,用這些函數給計算機一個激勵行為。在第一次給計算機看貓圖片的時候,神經網絡只有部分神經元被激活,這部分神經元所傳遞的信息是對輸出結果最有價值的信息。如果輸出的結果判斷錯了,那么就會修改神經元,這部分神經元就會變得遲鈍,其他神經元會變得敏感,從而被激活,這樣一次次的訓練,所有神經元的參數都在被改變,他們才會對重要/正確的信息更為敏感。
1.3 神經網絡 梯度下降
原理:梯度下降機制
對于一個誤差方程,我們通常用平方差來代替,現在我們簡化一下這個方程,W是神經網絡中的參數,x和y都是數據,假設初始化的W在圖中的位置,我們應用梯度下降法不斷的尋找最低點,當梯度曲線躺平時我們就找到了W的最理想值。但是在具體的神經網絡中的梯度下降可沒這么簡單,因為有很多的W,如果有一個W,那么我們可以畫出二維圖形,如果有兩個W,我們可以畫出一個三維圖形,但是如果更多,我們就沒辦法畫出可視化圖形了,并且誤差曲線的最優解也不止一個。
全局最優解固然是最好的,但是我們無法保證找到的一定是全局最優解,當然了,局部最優解也可以完成你想要的結果。
1.4 神經網絡的黑盒不黑
黑盒其實就是一個對數據的加工過程,他代表的就是輸入和輸出之間的隱藏層。對于輸入端的baby,黑盒中第一個隱藏層對baby的信息進行加工形成一個計算機才能識別的信息,它會朝著輸出奶瓶進行轉換,在第二個隱藏層中繼續對第一個隱藏層中的信息進行加工使之更接近奶瓶,所以與其說黑盒是在加工處理,不如說他是將一種代表特征轉換成另一種代表特征,一次次特征之間的轉換,也就是一次次的更有深度的理解。
在專業術語中,我們將輸入端的baby叫做特征,將加工過的特征叫做代表特征。
舉例說明:神經網絡接收分類手寫的圖片
我們先將輸出端拆掉,在隱藏層的最后一層,是三個神經元,第三層要輸出的信息就是我們手寫圖的最重要的代表特征,就是用這三個信息來表達整張圖片的所有像素點。對于計算機來說0和1是完全不同的兩個東西,所以計算機把他們放到了空間里完全不同的地方進行分類。
而輸出端就是將前面的輸出內容進行整理歸類,把落在同一區域的內容歸為一類,比如落在1所在的區域,計算機就會認定那些對應的像素點就是1,再對劃分出來的像素點集進行整合。
這就是說黑盒并不黑的原因,有時候代表特征太多,人類無法進行分類與發現規律,而計算機卻可以,這種代表特征的理解方式非常有用,以至于人們拿著它來研究更高級的神經網絡玩法,例如遷移學習(Transfer Learning)。
遷移學習
對于一個訓練過的有分類能力的神經網絡,我們有時候需要這套神經網絡的理解能力,并拿這套理解能力去處理其他問題,所以我們保留它的代表特征的轉換能力,有了這個能力,我們就能將復雜的圖片信息轉換成更少的更有用的信息,比如剛剛那個神經網絡,我們切掉輸出層,套上另外一個神經網絡,用這種移植的方式再進行訓練,讓它可以處理不同的問題,比如預測照片里事物的價值等等。
1.5 為什么選Tensorflow?
TensorFlow是Google開發的一款神經網絡的Python外部的結構包, 也是一個采用數據流圖來進行數值計算的開源軟件庫.TensorFlow讓我們可以先繪制計算結構圖, 也可以稱是一系列可人機交互的計算操作, 然后把編輯好的Python文件轉換成更高效的C++, 并在后端進行計算。
1.6 Tensorflow的安裝
安裝視頻教程 | 莫煩python
首先安裝python3.5及以上版本
使用pip安裝
安裝pip
CPU版本
$ pip3 install tensorflowGPU版本
先安裝NVIDIA CUDA必要組件
通過pip安裝
$ sudo apt-get install python3-pip python3-dev # for Python 3.n然后選擇要安裝的版本
$ pip install tensorflow # Python 2.7; CPU support (no GPU support) $ pip3 install tensorflow # Python 3.n; CPU support (no GPU support) $ pip install tensorflow-gpu # Python 2.7; GPU support $ pip3 install tensorflow-gpu # Python 3.n; GPU supportwindows版本
方法一:安裝Anaconda
方法二:pip安裝
首先安裝python3.5及以上版本
安裝numpy,兩個教程莫煩python,或者u014206910的CSDN博客,以及可能會出現的錯誤。
在cmd或者powershell窗口下敲命令
錯誤1:
Error importing tensorflow. Unless you are using bazel, you should not try to import tensorflow from its source directory; please exit the tensorflow source tree, and relaunch your python interpreter from there.解決辦法:安裝Microsoft Visual C++ 2015 redistributable update 3 64 bit。
錯誤2:
解決辦法:安裝Visual C++ Redistributable for Visual Studio 2015。
測試
打開python編輯器,輸入以下代碼,如果沒有出錯則說明安裝正確。
更新Tensorflow
比較麻煩,要先刪除原有的版本,重新安裝
1.7 神經網絡在干嘛
機器學習其實就是讓電腦不斷的嘗試模擬已知的數據,他能知道自己擬合的數據離真實的數據差距有多遠,然后不斷地改進自己擬合的參數,提高擬合的相似度。
擬合參數:假設我們的神經網絡模擬訓練一個二維的數組問題,x表示輸入,y表示輸出,二元一次函數y=ax+b,我們要通過不斷的訓練得出一個最優的或者說確定下來的a和b的值,這樣再以后再輸入的時候,就可以得到確定的y的值(當然這是不可能的,只能無限接近)。
總結
以上是生活随笔為你收集整理的莫烦PYTHON | Tensorflow教程——Tensorflow简介(第一章)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年中国研究生数学建模竞赛D题参考
- 下一篇: 【python】10行代码下载B站弹幕