繁体   English   中英

从顺序Keras模型中保存特定层

[英]Saving the specific layer from within a sequential Keras model

我正在构建一个自动编码器并训练该模型,因此目标输出与输入相同。

我正在使用顺序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))

训练后,从训练到的模型(模型)中以所需的图层结尾创建一个新模型(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)

layer.get_weights()以numpy数组的形式返回图层的权重,然后可以将其保存,例如使用np.save

要从numpy数组设置权重,可以使用layer.set_weights(weights)

您可以通过名称( model.get_layer(LAYER_NAME)或其编号( model.layers[LAYER_INDEX] )访问图层。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM