Keras从零学习-函数式模型-0x4

2,506次阅读
没有评论

共计 810 个字符,预计需要花费 3 分钟才能阅读完成。

序列模型的好处就是简单易理解,上一篇文章介绍了序列模型的简单使用模型定义序列模型

但是函数式模型定义会让你定义模型更加灵活。为什么称之为函数式,是因为你发现你在定义网路的时候就是在写各种函数的调用,所以看起来就是不断调用的函数来操作神经网络。

先看一个简单的例子(来源keras官网)

from keras.layers import Input, Dense
from keras.models import Model

# 这部分返回一个张量
inputs = Input(shape=(784,))

# 层的实例是可调用的,它以张量为参数,并且返回一个张量
x = Dense(64, activation='relu')(inputs)
x = Dense(64, activation='relu')(x)
predictions = Dense(10, activation='softmax')(x)

# 这部分创建了一个包含输入层和三个全连接层的模型
model = Model(inputs=inputs, outputs=predictions)
model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])
model.fit(data, labels)  # 开始训练

与序列模型不一样的是:

  1. 序列在第一层网络中定义输入的大小,现在是直接给出Input层的输入。
  2. 序列模型每一层之间不需要指定输入,都是自动推导的,现在函数式定义需要指定

还有一点使用函数式的API就是你要获取任意中间层的数据会变得相对简单一点,不然你使用的序列模型是要去get指定网络层的input和output,在函数式里面,直接获取对应的层的输出变量即可。

 

所以函数式模型定义的主要流程:

  1. 指定Input
  2. 定义中间网络层处理
  3. 得到Output
  4. compile和fit数据

下一节继续讲解函数式灵活的一些实际应用。

正文完
请博主喝杯咖啡吧!
post-qrcode
 
admin
版权声明:本站原创文章,由 admin 2019-08-11发表,共计810字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码