安裝
pip install keras
keras 有兩個 backend,也就是 keras 基於什麼東西來做運算
keras 的兩個 backend,乙個是 theano,乙個是 tensorflow
每次當我們 import keras 的時候, 就會看到螢幕顯示當前使用的 backend
>>> import keras
using tensorflow backend.
配置檔案
lin@master:~$ cat ~/.keras/keras.json
直接修改配置檔案可能會在 import 時出現錯誤資訊
解決方案
1. 在其他文字編輯器內編輯好這段文字, 然後整體拷貝到這個檔案裡
2. 在 terminal 中直接輸入臨時環境變數執行: keras_backend=tensorflow python -c "from keras import backend"
3. 在 python **中 import keras 前加入乙個環境變數修改的語句: os.environ['keras_backend']='theano'
為什麼用 keras
tensorflow 提供很多基礎的操作, 要寫完乙個模型比如神經網路還需要很多**
keras 之類的第三方軟體對 tensorflow, theano 等作了封裝
適合於簡易和快速的原型設計
支援 cnn 和 rnn, 或二者的結合
無縫 cpu 和 gpu 切換
keras 適用的 python 版本是:python 2.7-3.6
keras 的設計原則是
使用者友好:提供一致而簡潔的 api
模組性:網路層、損失函式、優化器、初始化策略、啟用函式、正則化方法都是獨立的模組
易擴充套件性:新增新模組超級容易,只需要仿照現有的模組編寫新的類或函式即可
與 python 協作:keras 沒有單獨的模型配置檔案型別 (作為對比, caffe 有)
模型由 python **描述, 使其更緊湊和更易 debug, 並提供了擴充套件的便利性
神經網路例子
from sklearn import datasets
from keras.models import sequential
from keras.layers import dense, activation
from keras.utils import to_categorical
## 建立乙個空的順序序列的網路結構
model = sequential()
## 新增 dense (既全連線層)
## units 是該層的神經元個數既輸出資料維度
## activation 是啟用函式(沒指定就用 f(x)=x )
## use_bias 是否使用偏移
## input_dim 輸入資料維度
model.add(dense(units=64, activation='relu', input_dim=4))
model.add(dense(units=32, activation='relu'))
model.add(dense(units=3, activation='softmax'))
## 也可以分兩步實現, 把 activation 作為單獨一層
## model.add(dense(units=64, input_dim=100))
## model.add(activation("relu"))
## 編譯模型, 指定損失函式, 優化器, 也可以使用自己自定義的函式
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
## 讀取樣本資料
data = datasets.load_iris()
x, y = data.data[:-1], data.target[:-1]
## 轉為二進位制
y = to_categorical(y)
## 訓練
model.fit(x, y, epochs=100, batch_size=32)
## 評估
loss_and_metrics = model.evaluate(x, y, batch_size=128)
## **
classes = model.predict(x, batch_size=128)
卷積神經網路
from keras.layers import conv2d, maxpool2d, dense, flatten
from keras.models import sequential
from keras.utils import to_categorical
from sklearn import datasets
lenet = sequential()
## 新增卷積層, filters 核數, kernel_size 核大小, strides 步長, padding 填充方式, input_shape 輸入資料維度
lenet.add(conv2d(filters=6, kernel_size=3, strides=1, padding='same', input_shape=(8, 8, 1)))
## 新增池化層, pool_size 大小, strides 步長
lenet.add(maxpool2d(pool_size=2, strides=2))
## 繼續新增卷積層
lenet.add(conv2d(filters=16, kernel_size=3, strides=1, padding='valid'))
## 繼續新增池化層
lenet.add(maxpool2d(pool_size=2, strides=2))
## 扁平化, 將多維資料轉化為一維資料
lenet.add(flatten())
## 新增全連線層
lenet.add(dense(120))
lenet.add(dense(84))
lenet.add(dense(10, activation='softmax'))
## 編譯
lenet.compile('sgd', loss='mean_squared_error', metrics=['accuracy'])
## 讀取樣本資料
digits = datasets.load_digits()
x, y = digits.data[:-1], digits.target[:-1]
x = x.reshape(-1,8,8,1) ## 將 x 從 (1796, 64) 變為 (1796, 8, 8, 1)
y = to_categorical(y) ## 將 y 二進位製化 (one-hot)
## 訓練
lenet.fit(x, y, batch_size=64, epochs=50, validation_data=[x, y])
## **
lenet.predict(x)
視覺化
sudo apt-get install graphviz
sudo pip install graphviz
sudo pip install pydot_ng
from keras.models import sequential
from keras.layers.core import dense, dropout, activation
from keras.layers.embeddings import embedding
from keras.layers.recurrent import lstm
from keras.utils import plot_model
model = sequential()
model.add(embedding(input_dim=1024, output_dim=256, input_length=50))
model.add(lstm(128))
model.add(dropout(0.5))
model.add(dense(1))
model.add(activation('sigmoid'))
plot_model(model, to_file='model.png')
keras機器學習基礎
機器學習就是計算機用資料來學習。通過給計算機一些資料,讓計算機來學習,之後能夠進行自主計算和判斷。比如先給計算機一些阿貓阿狗的,並且告訴計算機每張是什麼 也就是標籤 計算機通過這些喂進去的資料來學習。學習完後,計算機就具備自主判斷能力,給計算機一張從未見過的阿貓或者阿狗的,計算機就能夠給打乙個標籤 ...
極簡機器學習入門
機器學習是人工智慧的子集。人工智慧是最早出現的,也是最大 最外側的矩形 其次是機器學習,稍晚一點 最內側,是深度學習,當今人工智慧大 的核心驅動。人工智慧可以分為強人工智慧和弱人工智慧。機器學習是一種實現人工智慧的方法。機器學習最基本的做法,是使用演算法來解析資料 從中學習,然後對真實世界中的事件做...
神經網路學習小記錄6 利用Keras進行簡單分類
全部 上一步講了如何構建回歸演算法,這一次將怎麼進行簡單分類。np utils.to categorical用於將標籤轉化為形如 nb samples,nb classes 的二值序列。假設num classes 10。如將 1,2,3,4 轉化成 0,1,0,0,0,0,0,0 0,0,1,0,0...