TensorFlow中Sequential与Model([input],[output])的差异探究
Sequential与函数式Model模型结果不一致
逐层构建模型时,Sequential与Model([input],[output])形式的函数式模型看似能得到相同结果,但实际处理相同输入(输入形状(None, 15, 2),输出形状(None, 1, 2))时,二者结果存在明显差异。
模型代码对比
Sequential模型
model = tf.keras.Sequential( [ tf.keras.layers.Conv1D(filters = 4, kernel_size =7, activation = "relu"), tf.keras.layers.Conv1D(filters = 6, kernel_size = 11, activation = "relu"), tf.keras.layers.LSTM(100, return_sequences=True,activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.LSTM(100,activation='relu'), tf.keras.layers.Dense(2,activation='relu'), tf.keras.layers.Reshape((1,2)) ] )
函数式Model模型
input_layer = tf.keras.layers.Input(shape=(LOOK_BACK, 2)) conv = tf.keras.layers.Conv1D(filters=4, kernel_size=7, activation='relu')(input_layer) conv = tf.keras.layers.Conv1D(filters=6, kernel_size=11, activation='relu')(conv) lstm = tf.keras.layers.LSTM(100, return_sequences=True, activation='relu')(conv) dropout = tf.keras.layers.Dropout(0.2)(lstm) lstm = tf.keras.layers.LSTM(100, activation='relu')(dropout) dense = tf.keras.layers.Dense(2, activation='relu')(lstm) output_layer = tf.keras.layers.Reshape((1,2))(dense) model = tf.keras.models.Model([input_layer], [output_layer])
模型结果对比
Sequential模型结果

- mse: 21.679258038588586
- rmse: 4.65609901511862
- mae: 3.963341420395535
函数式Model模型结果

- mse: 36.85855652774293
- rmse: 6.071124815694612
- mae: 4.4878270279889065
内容的提问来源于stack exchange,提问作者肉蛋充肌
相关产品推荐
相关产品推荐

