我正在构建一个自动编码器并训练模型,因此目标输出与输入相同 .
我正在使用顺序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))
2 回答
layer.get_weights()
将图层的权重作为numpy数组返回,然后可以保存该数组,例如使用np.save
.要从numpy数组设置权重,可以使用
layer.set_weights(weights)
.您可以按名称(
model.get_layer(LAYER_NAME)
或其编号(model.layers[LAYER_INDEX]
))访问图层 .训练后,从训练模型(模型)中创建一个新模型(模型2),该模型以所需图层结束 .
您可以使用图层名称执行此操作:
(在model.summary()中,你的密集层'名称'有256个神经元是密集的_5)
或者使用图层顺序:
(你的密集层有256个神经元在model.summary()中排名第五)
然后你可以使用预测