我正在构建一个自编码器,并训练模型,使目标输出与输入相同。
我使用的是Keras的序列模型。当我使用model.predict时,我希望它能导出特定层(Dense256)的数组,而不是输出层。
这是我当前的模型:
model = Sequential()model.add(Dense(4096, input_dim = x.shape[1], activation = 'relu'))model.add(Dense(2048, activation='relu'))model.add(Dense(1024, activation='relu'))model.add(Dense(512, activation='relu'))model.add(Dense(256, activation='relu'))model.add(Dense(512, activation='relu'))model.add(Dense(1024, activation='relu'))model.add(Dense(2048, activation='relu'))model.add(Dense(4096, activation='relu'))model.add(Dense(x.shape[1], activation ='sigmoid'))model.compile(loss = 'mean_squared_error', optimizer = 'adam')history = model.fit(data_train,data_train, verbose=1, epochs=10, batch_size=256, shuffle=True, validation_data=(data_test, data_test))
回答:
训练完成后,从您的训练模型(model)创建一个新的模型(model2),以您所需的层结束。
您可以使用层名称来实现:
(在model.summary()中,您的256个神经元的密集层‘名称’是dense_5)
from keras.models import Modelmodel2= Model(model.input,model.get_layer('dense_5').output)
或者使用层顺序:
(您拥有256个神经元的密集层在model.summary()中是第五个)
from keras.models import Modelmodel2= Model(model.input,model.layers[4].output)
然后您可以使用predict
preds=model2.predict(x)