Keras 入门实例

 使用Keras构建神经网络的基本工作流程主要可以分为 4个部分。(而这个用法和思路,很像是在使用Scikit-learn中的机器学习方法)

Model definition → Model compilation → Training → Evaluation and Prediction
 
1、首先执行构建模型的 第一步,即Model Definition
这一步的作用就是定义NN中的层次结构。为此要引入两个重要的类,Sequential和Dense。
from keras.models import Sequential
from keras.layers import Dense

(1)Sequential是Keras中构建NN最常用的一种Model(也是最简单的一种),一个Sequential的Model 就是 a linear stack of layers,也就是说,你只要按顺序(使用add()方法)一层一层地顺序地添加神经网络层就可以了。

(2)Dense表示全连接层,此时它需要接收两个参数,即输入的节点数及输出的节点数,特别地,在一层一层地构建NN时,Keras还可以根据上一层的输出来推断下一次的输入,所以有些全连接层参数可以省略。
在这个简单的例子中,我们的全连接层只有一层,而且输入的节点数和输出的节点数都为1,所以有:
model = Sequential()
model.add(Dense(output_dim = 1, input_dim = 1))
2、接下来执行构建模型的 第二步,即Model compilation
这一步是要指定模型中的loss function(在这例子中使用的是最小二乘误差‘mse’),优化器以及metrics等内容。优化器你可以使用系统提供的默认优化器,例如你可以像下面这样用'sgd'表示随机梯度下降。
model.compile(loss='mse', optimizer='sgd')
也可以像下面这样自定义优化器中的参数:
from keras.optimizers import SGD
model.compile(loss='mse', optimizer=SGD(lr=0.01, momentum=0.9, nesterov=True))
3、接下来执行构建模型的 第三步,即 Training:
有两个选择:
(1)第一种直接使用fit,这个简直和Scikit-learn中的感觉像极了!你只要在fit方法的参数列表中指定训练数据(特征向量和label)、训练的次数和用来做梯度下降的batch size就可以了。
model.fit(x_train, y_train, epochs=100, batch_size=64)
(2)另外一个选择是你也可以采用下面的语法来feed batches to your model manually:
model.train_on_batch(x_batch, y_batch)
例如在本例中你可以把训练部分写成下面这种形式,其中每20步,我们会输出一次cost。
print('Training -----------')
for step in range(100):
    cost = model.train_on_batch(X_train, Y_train)
    if step % 20 == 0:
        print('train cost: ', cost)
 
4、最后进入 Evaluation and Prediction的部分了。对于之前预留的测试集来说,你可以使用:
cost = model.evaluate(X_test, Y_test, batch_size=40)
 

 5、

【Reference】

1、https://blog.csdn.net/baimafujinji/article/details/78384792

猜你喜欢

转载自www.cnblogs.com/shenxiaolin/p/11122893.html