//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)) #输出测试集的预测结果