点这里,搜索淘宝优惠券!
点这里,搜索淘宝优惠券!

7 函数模型Model细节

【关于函数名称】

  函数式模型的中文译文是根据模型的使用方式意译的,在英文中,函数式模型英文为Model

【为甚么使用函数式模型】

  序贯模型(Sequential)有一个缺陷,即网络只能一层一层的堆叠起来,无法处理分支网络的情况。在深度神经网络结构中,比如ResNet或Inception这些相对复杂的模块,使用序贯模型就无法构建。使用函数式模型,构建起模型来则十分方便。

  Keras的函数式模型为Model,即广义的拥有输入和输出的模型。使用函数式模型很简单,直接在网络层模块后写一个括号,参数就是当前层的输入值,返回值就是当前层的输出值,

  使用函数式模型构建网络结构如下例所示:

1 from keras.models import Model
2 from keras.layers import Input, Dense
3 
4 a = Input(shape=(32,)) #创建输入层,输入数据为32*1的元祖
5 b = Dense(32)(a) #创建全连接层b,输入为a层节点,32表示全连接层输出节点有32个
6 model = Model(inputs=a, outputs=b)

  可以使用函数式模型构造拥有多输入和多输出的模型

1 model = Model(inputs=[a1, a2], outputs=[b1, b3, b3])

常用Model属性

  • model.layers:组成模型图的各个层
  • model.inputs:模型的输入张量列表
  • model.outputs:模型的输出张量列表

Model模型方法

  与序贯模型相同,参考网址:https://keras-cn.readthedocs.io/en/latest/models/model/

 1 compile(self, optimizer, loss, metrics=None, loss_weights=None, sample_weight_mode=None, weighted_metrics=None, target_tensors=None)
 2 
 3 fit(self, x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None)
 4 
 5 evaluate(self, x, y, batch_size=32, verbose=1, sample_weight=None)
 6 
 7 predict(self, x, batch_size=32, verbose=0)
 8 
 9 train_on_batch(self, x, y, class_weight=None, sample_weight=None)
10 
11 test_on_batch(self, x, y, sample_weight=None)
12 
13 predict_on_batch(self, x)
14 
15 fit_generator(self, generator, steps_per_epoch, epochs=1, verbose=1, callbacks=None, validation_data=None, validation_steps=None, class_weight=None, max_q_size=10, workers=1, pickle_safe=False, initial_epoch=0)
16 
17 evaluate_generator(self, generator, steps, max_q_size=10, workers=1, pickle_safe=False)
18 
19 predict_generator(self, generator, steps, max_queue_size=10, workers=1, use_multiprocessing=False, verbose=0)

 

 
 
posted @ 2018-09-05 17:17  chd_ailex  阅读(996)  评论(0)    收藏  举报