版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011240016/article/details/85151287
开发流程
典型的Keras工作流程如下:
- 定义训练数据:输入张量和目标张量
- 定义层组成的网络(模型),将输入映射到目标
- 配置学习过程:选择损失函数,优化器和需要监控的指标
- 调用模型的
fit
方法在训练数据上迭代
定义模型的方法
有两种方法:
- 使用
Sequential
类,仅仅用于层的线性堆叠,目前最常用 函数式API
,可以构建任意形式的架构
案例:
线性堆叠法
from keras import models
from keras import layers
model = models.Sequential()
model.add(layers.Dense(32, activation='relu', input_shape=(784,)))
model.add(layers.Dense(10, activation='softmax'))
函数式API
input_tensor = layers.Input(shape=(784,))
x = layers.Dense(32, activation='relu')(input_tensor)
output_tensor = layers.Dense(10, activation='softmax')(x)
model = models.Model(inputs=input_tensor, outputs=output_tensor)
函数式API,使得我们可以操纵数据张量,后面会再详细讲函数式API。
在模型架构定义好之后,接下来的步骤就是相同的了。
编译时指定:优化器,损失函数,监控指标等。
from keras import optimizers
model.compile(optimizer=optimiers.RMSprop(lr=0.001), loss='mse', metrics=['accuracy'])
学习:就是调用fit
函数并将输入数据传入模型。
model.fit(input_tensor, target_tensor, batch_size=128, epochs=10)
注意,这里是epochs
不是epoches
。
既然到这里,就已经掌握了深度学习的基本流程,后续还要学什么呢?答案是,在如下几个问题上训练出可靠的直觉,也即,训练自己:
- 哪种网络架构适合哪种类型的问题?
- 如何选择正确的配置?
- 如何调节模型使其给出我们需要的结果?
END.
参考:
《Deep Learning with Python》