我正在构建自动编码器并训练模型,以使目标输出与输入相同。
我正在使用顺序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))
答案 0 :(得分:1)
训练后,从训练到的模型(模型)中以所需的图层结尾创建一个新模型(model2)。
您可以使用图层名称进行操作:
(在model.summary()中,具有256个神经元的密集层的“名称”为density_5)
from keras.models import Model
model2= Model(model.input,model.get_layer('dense_5').output)
或具有图层顺序:
(您的具有256个神经元的致密层在model.summary()中排名第五)
from keras.models import Model
model2= Model(model.input,model.layers[4].output)
然后您可以使用预测
preds=model2.predict(x)
答案 1 :(得分:1)
{layer.get_weights()
将层的权重作为一个numpy数组返回,然后可以将其保存,例如使用np.save
。
要从numpy数组中设置权重,可以使用layer.set_weights(weights)
。
您可以按名称(model.get_layer(LAYER_NAME)
或按其编号(model.layers[LAYER_INDEX]
)访问图层。