Keras tutorial - the Happy House
keras简介
Keras是一种高级神经网络API,用Python编写,能够在TensorFlow和CNTK等较低级别的框架之上运行。
Keras的开发是为了让深度学习工程师能够非常快速地构建和试验不同的模型。TensorFlow是一个比Python更高级的框架,Keras是一个更高级别的框架。
Keras适用于许多常见的模型。实现起来更简单更快。
但是,Keras比较低级别的框架更具限制性,因此有一些非常复杂的模型可以在TensorFlow中实现,但不能再在Keras中实现(或者实现非常困难)。
数据集
这个名叫“happy house”的公寓,门口有个人脸识别。它对想要进入的人进行表情识别:如果表情是快乐的,就让进去;如果不快乐,会被拦下。
Details of the “Happy” dataset:
- Images are of shape (64,64,3)
- Training: 600 pictures
- Test: 150 pictures
用Keras建立一个神经网络模型
Keras非常适合快速原型设计。 在短时间内,您将能够构建一个可以获得出色结果的模型。
1 | def HappyModel(input_shape): |
需要注意keras变量命名的方法。之前在numpy和Tensorflow中,我们用不同的变量名来表示不同意义的变量,如X
,Z1
,A1
;在Keras中,用一个变量X
来表示,每一行都是对变量X
进行重新定义。(唯一的例外就是X_input
)。
You have now built a function to describe your model. To train and test this model, there are four steps in Keras:
- 调用上面的函数建立一个模型实例;
- 编译模型
model.compile(optimizer = "...", loss = "...", metrics = ["accuracy"])
; - 模型训练
model.fit(x = ..., y = ..., epochs = ..., batch_size = ...)
- 模型测试
model.evaluate(x = ..., y = ...)
如果想了解更多关于model.compile()
, model.fit()
, model.evaluate()
的内容,课参考官方文档Keras documentation.
Exercise: Implement step 1, i.e. create the model.
建立一个模型实例1
happyModel = HappyModel(input_shape = (64, 64, 3))
编译模型1
happyModel.compile(optimizer = "adam", loss ="binary_crossentropy", metrics = ["accuracy"])
模型训练1
happyModel.fit(x = X_train, y = Y_train, epochs = 2, batch_size = 32)
这里的model.fit()
返回的是一个History
对象。History类对象包含两个属性,分别为epoch和history,epoch为训练轮数。
根据model.compile()
的参数metrics
,history包含不同的内容。
比如,当某一次metrics=['accuracy']
时,history字典类型,包含val_loss
,val_acc
,loss
,acc
四个key值。1
2
3
4
5
6
7
8plt.plot(history.history['loss'])
# plt.plot(history.history['val_loss'])
plt.title("model loss")
plt.ylabel("loss")
plt.xlabel("epoch")
# plt.legend(["train","val"],loc="upper left")
plt.legend(["train"],loc="upper left")
plt.show()
模型测试1
2
3
4
5preds = happyModel.evaluate(x = X_test, y = Y_test)
print()
print ("Loss = " + str(preds[0]))
print ("Test Accuracy = " + str(preds[1]))