//2019.07.29-30
1、Keras 是提供一些高度可用神經網絡框架的 Python API ,能幫助你快速的構建和訓練自己的深度學習模型,它的后端是 TensorFlow 或者 Theano 。
2、Keras 被認為是構建神經網絡的未來,以下是一些它流行的原因:
(1)輕量級和快速開發:Keras的目的是在消除樣板代碼。幾行Keras代碼就能比原生的 TensorFlow 代碼實現更多的功能。你也可以很輕松的實現 CNN和RNN,並且讓它們運行在 CPU 或者 GPU 上面。
(2)框架的“贏者”:Keras是一個API,運行在別的深度學習框架上面。這個框架可以是 TensorFlow 或者 Theano。Microsoft也計划讓CNTK作為Keras的一個后端。目前,神經網絡框架世界是非常分散的,並且發展非常快。
想象一下,我們每年都要去學習一個新的框架,這是多么的痛苦。到目前為止,TensorFlow 似乎成為了一種潮流,並且越來越多的框架開始為 Keras 提供支持,它可能會成為一種標准。
3、目前,Keras 是成長最快的一種深度學習框架。因為可以使用不同的深度學習框架作為后端,這也使得它成為了流行的一個很大的原因。你可以設想這樣一個場景,如果你閱讀到了一篇很有趣的論文,並且你想在你自己的數據集上面測試這個模型。讓我們再次假設,你對TensorFlow非常熟悉,但是對Theano了解的非常少。那么,你必須使用TensorFlow 對這個論文進行復現,但是這個周期是非常長的。但是,如果現在代碼是采用Keras寫的,那么你只要將后端修改為TensorFlow就可以使用代碼了。這將是對社區發展的一個巨大的推動作用。
4、利用Keras的theano框架搭建一個人工神經網絡:
import numpy as np
import pandas as pd
from keras.models import Sequential
from keras.layers import Dense,Activation
from keras.optimizers import SGD
from sklearn.datasets import load_iris #導入Keras人工神經網絡搭建模塊和導入原始數據
iris=load_iris()
print(iris["target"])
from sklearn.preprocessing import LabelBinarizer
print(LabelBinarizer().fit_transform(iris["target"]))
from sklearn.model_selection import train_test_split
train_data,test_data, train_target, test_target=train_test_split(iris.data,iris.target,test_size=0.2,random_state=1)
labels_train=LabelBinarizer().fit_transform(train_target)
labels_test=LabelBinarizer().fit_transform(test_target)
model=Sequential(
[
Dense(5,input_dim=4),
Activation("relu"),
Dense(3),
Activation("sigmoid"), #搭建數據神經網絡的結構(輸入輸出的形式和數量)
]
)
#model=Sequential()
sgd=SGD(lr=0.01,decay=1e-6,momentum=0.9,nesterov=True)
model.compile(optimizer=sgd,loss="categorical_crossentropy")
model.fit(train_data,labels_train,nb_epoch=200,batch_size=40) #進行數據的訓練
print(model.predict_classes(test_data)) #輸出測試集的預測結果