一、運行 Jupyter
Jupyter在編輯過程中,每編輯一段代碼,就可以運行一段代碼,運行的結果也將直接顯示在代碼下方, 方便查看。 在數據科學領域, 需要頻繁的進行數據清洗,查看,以及畫圖, 非常需要這種交互式的開發環境。
運行以及編輯的所有結果會保存在文件中,後續只要把文件分享給別人, 就可以看到你的一系列操作。
Jupyter以段落為主的編輯模式:
啟動jupyter, 系統提示如下錯誤:
C:\WINDOWS\system32>jupyter notebook
AttributeError: type object 'IOLoop' has no attribute 'initialized'
原因:
tornado版本過高,如下圖為5.1.1,不支持jupyter notebook.
conda install tornado=4.5
啟動jupyter, 啟動成功
為了便於文件管理, 指定工作路逕啟動:
jupyter notebook D:\g_learn\jupyter
二、通過Jupter,來進行Keras環境檢查:
新建一個python文件,命名為keras_evn,保存
三、用Python實現感知機,為了便於理解keras的各種api的作用:
前向傳播:通過輸入層輸入,並且一路向前計算出輸出的結果。
反向傳播:通過輸出反向更新權重的過程。差值*學習率來更新權重。
鏈式法則:是微積分中的求導法則,用於求一個複合函數的導數,是在微積分的求導運算中一種常用的方法。複合函數的導數將是構成複合這有限個函數在相應點的 導數的乘積,就像鎖鏈一樣一環套一環,故稱鏈式法則。
線性感知機:根據特徵對數據進行分類,通過這個算法,可以發現一條曲線、曲面,或者叫做超平面,在二維圖形中可以表現為一條直線,當維度大於3時表現為是一個超平面,n-1維。
在一個二維空間內,生成一些點, 生成一條直線,將原來點進行分割。用感知機對隨機點進行分類, 來看差別。
運行結果如下:
四、Keras Hello world - Minist手寫體識別:
Keras基礎模塊:
在juypter中, 用SHIFT+TAB鍵快速查看函數參數
Minist 手寫體識別導入數據集|模型|層|優化器
從數據集中加載數據,訓練集和測試集,這個操作需要一會兒
訓練集60000張 28*28,測試集
這是可視化的包, 以灰度展示,加上參數cmap="gray"
看一下這張圖片是不是5,將圖片轉成一個一維的向量,並查看。
可以看到這是0-255的值
可以看到這是0-255的值
我們期望把值縮小到0-1之內, 神經網絡可以更快的收斂。
對有標籤進行處理, keras提供了相應的工具,用to_categorical,將向量轉化為二階矩陣,因為是0-9, 所以是10個。
構建模型,後面的工作都交給神經網絡。輸入層-隱藏層-輸出層
以上搭建了模型,通過compile,對神經網絡進行編譯:優化器,損失函數, 通過【準確度】可以人為評判。
對模型進行訓練,優化5次,可以看到, 精度越來越高,損失越來越小
用evaluate對模型的效果進行評估
'activations', 激活函數'applications', 有已經訓練好的模型'callbacks',回調函數engine 是layer層的核心代碼layers 包括keras已經實現的網絡層,和卷積層等losses 損失函數,衡量訓練中的好壞metricsmodels 函數式編程,和序貫編程optimizer 更新權值的一個方法preprocessing 預處理模塊regularizersutils 工具模塊wrappers 封裝模塊