1. 定义模型架构
序贯式和函数式都可以定义模型架构,序贯式是层层叠加定义模型,函数式是通过input-middle_output1-middle_output2-…-output定义模型。一般两种方式可以互换。
- 序贯式:
- 函数式:
但是,对于inception network这种input-多个middle_output-output这种需要“分流”的情况,只能用函数式定义模型。
Note:
- Input(shape=())
定义输入的dim - keras.layers.concatenate([拼接对象], axis)
concatenate函数拼接方式:对于三维ndarray即tensor,axis可能取值有:-3,-2,-1,0,1,2。对于input = (行数,列数,通道数)=(W, H, C),axis = -1, -2, -3对应着按倒数第一/二/三个dim即C/H/W拼接,axis = 0,1,2对应着按第一/二/三个dim即W/H/C拼接。
按X拼接的意思是,X数不变。
上图axis=1,按列拼接,列数不变。
2. 除定义模型架构这一步外,程序其他部分都一样
1)import
2)预处理数据
CNN应用于nlp数据,所以需要设#channel = 1 i.e. (60000,28,28)–> (60000,28,28,1)
3)定义模型架构
4)训练模型 & 用模型进行预测 (training & inference/prediction)
reference:
AIMOOC覃秉丰-keras项目实战课程:https://www.bilibili.com/video/BV1zk4y1y7aP?p=9