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)

浙公网安备 33010602011771号