层顺序从未被调用,因此在尝试从顺序模型中提取层时没有定义的输入错误

问题描述 投票:0回答:1

我正在尝试从顺序模型中提取层来构建自动编码器。我在一些数据上训练了模型,但是当我尝试从模型中获取 model.input 时,我收到一条错误消息,指出它从未被调用过。

我在这里设置并训练模型。

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Input
from tensorflow.keras.optimizers import Adam

model = Sequential()
model.add(Input(shape=(X_train_scaled.shape[1],)))  # Input layer
model.add(Dense(128, activation='relu'))  # First hidden layer
model.add(Dense(64, activation='relu'))  # Second hidden layer
model.add(Dense(1))  # Output layer

optimiser = Adam(learning_rate = 0.001)
model.compile(optimizer = optimiser, loss='mse')

history = model.fit(X_train_scaled, y_train, validation_data=(X_test_scaled, y_test), epochs=100, batch_size=16)

以下行会导致错误。

from tensorflow.keras.models import Model

encoder = Model(inputs=model.input, outputs=model.layers[-2].output)  # -2 to exclude the last layer

我对此很陌生,因此任何建议或指导将不胜感激。

tensorflow autoencoder
1个回答
0
投票

您正在使用 Sequential API 创建初始模型,并尝试通过功能 API 访问另一个模型上模型的输入属性。由于顺序模型没有可访问的输入属性。要解决此问题,您需要使用

model.layers[0].input
model.get_layer(index=0).input
隐式定义输入,或者将顺序模型切换为功能模型。 请参考这个要点

© www.soinside.com 2019 - 2024. All rights reserved.