我试图理解 Sequential API(即 Sequential()
)和 Function API(即 Model()
)之间的关系,用于在Keras。特别是,我对使用 Function API 生成的模型中存在 InputLayer
对象以及 Sequential 版本中缺少任何对应对象感到困惑。下面显示的两个版本是否等效? InputLayer
对象只是一个什么都不做的占位符?如果不是,需要做什么才能使模型等效?
from keras.layers import Input, Dense
from keras.models import Model,Sequential
N_in = 10
N_hidden = 10
N_out = 10
# Using Model API
input = Input(shape=(N_in,))
hidden = Dense(N_hidden)(input)
output = Dense(N_out)(hidden)
model1 = Model(input, output)
# Using Sequential API
model2= Sequential()
model2.add(Dense(N_hidden, input_dim=N_in))
model2.add(Dense(N_out))
for i in range(len(model1.layers)):
print(model1.layers[i])
keras.engine.input_layer.InputLayer object at 0xb333b8c88
keras.layers.core.Dense object at 0xb333b87b8>
keras.layers.core.Dense object at 0xb333b8b00>
for i in range(len(model2.layers)):
print(model2.layers[i])
keras.layers.core.Dense object at 0xb331eddd8
keras.layers.core.Dense object at 0xb3333dcc0
最佳答案
请注意,每个模型都必须至少有一个输入层,无论它是使用顺序 API 还是功能 API 创建的。不同之处在于 Sequential 模型的输入层is implicitly created和 applied (因此无法通过 .layers
属性访问),而对于使用功能 API 构建的模型,您必须显式定义输入层。
关于python - Keras InputLayer 存在于 Function API 创建的模型中,但不存在于 Sequential API 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53843139/