我正在尝试从顺序模型中提取层来构建自动编码器。我在一些数据上训练了模型,但是当我尝试从模型中获取 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
我对此很陌生,因此任何建议或指导将不胜感激。
您正在使用 Sequential API 创建初始模型,并尝试通过功能 API 访问另一个模型上模型的输入属性。由于顺序模型没有可访问的输入属性。要解决此问题,您需要使用
model.layers[0].input
或 model.get_layer(index=0).input
隐式定义输入,或者将顺序模型切换为功能模型。
请参考这个要点。