如何将Keras函数式API模型转为Sequential模型?求解最后两层代码
解决方案
首先,你现有代码存在两处小问题需要修正:
- 每一行
model.add()的括号未闭合,会触发语法错误 - 遗漏了原函数式API中的
MaxPool1D层,这会导致模型结构与原版本不一致
修正并补全后的完整Sequential模型代码如下:
from tensorflow import keras from keras.layers import Flatten, MaxPool1D # 初始化Sequential模型 model = keras.Sequential() # 添加输入层与卷积层 model.add(keras.layers.Conv1D(300, 19, strides=1, activation='relu', input_shape=dataset['x_train'].shape[1:])) model.add(keras.layers.Conv1D(300, 19, strides=1, activation='relu')) # 补上原函数式API里的MaxPool1D层 model.add(MaxPool1D(pool_size=3)) model.add(Flatten()) model.add(keras.layers.Dense(596, activation='relu')) # 添加原函数式API中的logit层与sigmoid输出层 model.add(keras.layers.Dense(35, activation='linear')) # logits层,激活函数为linear model.add(keras.layers.Activation('sigmoid')) # 输出层,sigmoid激活
关键说明:
- 原函数式API中的
logits = keras.layers.Dense(35, activation='linear')(nn),在Sequential中直接通过Dense(35, activation='linear')添加即可 - 后续的
sigmoid激活层通过Activation('sigmoid')单独添加,和原函数式API的逻辑完全对应 - 所有层的参数(如
strides、pool_size等)需与原模型保持一致,确保结构等价
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

