Model类(函数式API)
Keras函数式API是定义复杂模型(如多输出模型、有向无环图,或具有共享层模型的方法)
全连接网络
- 网络层的实例是可调用的,它以张量为参数,并返回一个张量
- 输入和输出均为张量,他们都可以用来定义一个模型(Model)
- 这样的模型和 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) # 开始训练
利用函数式 API ,可以重用训练好的模型:可将任何模型看作是一个层,然后通过传递一个张量来调用它。且在调用模型时,不仅重用了模型的结构,还重用了它的权重。
函数式 API 的另一个用途是使用共享网络层的模型。
多输入多输出
若只有一个输入:
a = Input(shape=(280, 256))
lstm = LSTM(32)