为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

米脂 2021-09-11 20:35:39
我正在构建一个自动编码器并训练模型,因此目标输出与输入相同。我正在使用顺序 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 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

训练后,从以所需层结尾的训练模型(模型)创建一个新模型(模型 2)。


您可以使用图层名称执行此操作:


(在model.summary() 中,你的dense 层'name' 有256 个神经元是dense_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)


查看完整回答
反对 回复 2021-09-11
?
慕森卡

TA贡献1806条经验 获得超8个赞

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

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

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


查看完整回答
反对 回复 2021-09-11
  • 2 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信