对比Keras.engine.training.Model()和Keras.engine.training.Sequential()的使用方式
Keras中提供了两种常用的模型构建方式:Model()和Sequential()。它们有一些相同的使用方式,但也有一些不同之处。
首先,从使用方式上讲,Sequential()是一个逐层构建的线性模型,而Model()则可以用来构建更复杂的模型,包括多输入和多输出。
下面我们对比一下这两种模型构建方式的使用方法,并给出相应的例子。
1. Sequential()的使用方法:
Sequential()是最常见的模型构建方式,它只能构建线性模型,即一层接一层的模型。
首先,我们需要导入相关的库和模块:
import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers
然后,我们可以通过Sequential()创建一个模型,并添加各个层次:
model = keras.Sequential() model.add(layers.Dense(64, activation='relu', input_shape=(784,))) model.add(layers.Dense(64, activation='relu')) model.add(layers.Dense(10, activation='softmax'))
在上面的例子中,我们依次添加了一个输入层、两个隐藏层和一个输出层。其中,第一个隐藏层的输入形状是(784,),输出形状是(64,)。第二个隐藏层的输入形状是(64,),输出形状也是(64,)。输出层的输入形状是(64,),输出形状是(10,)。
2. Model()的使用方法:
Model()可以用来构建更复杂的模型,包括多输入和多输出模型。
首先,我们同样需要导入相关的库和模块:
import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers
然后,我们可以通过Model()创建一个模型,并指定输入和输出:
inputs = keras.Input(shape=(784,)) x = layers.Dense(64, activation='relu')(inputs) x = layers.Dense(64, activation='relu')(x) outputs = layers.Dense(10, activation='softmax')(x) model = keras.Model(inputs=inputs, outputs=outputs)
在上面的例子中,我们首先创建了一个输入层,并指定输入形状为(784,)。然后,我们依次创建两个隐藏层和一个输出层,并指定每一层的输入和输出。最后,我们使用Model()指定了输入和输出,创建了一个模型。
对于多输入和多输出的模型,我们只需要指定输入和输出的列表即可。例如:
inputs1 = keras.Input(shape=(784,)) inputs2 = keras.Input(shape=(32,)) x1 = layers.Dense(64, activation='relu')(inputs1) x2 = layers.Dense(32, activation='relu')(inputs2) x = layers.concatenate([x1, x2]) outputs = layers.Dense(10, activation='softmax')(x) model = keras.Model(inputs=[inputs1, inputs2], outputs=outputs)
在上面的例子中,我们创建了两个输入层,分别指定输入形状为(784,)和(32,)。然后,分别对两个输入层进行操作。最后,通过concatenate()函数将两个操作结果合并,并将结果传递给输出层。
总结来说,Sequential()适用于简单的线性模型,而Model()适用于复杂的模型构建,包括多输入和多输出。由于Model()的灵活性更高,因此在实际应用中也更常用。
