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

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


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


米脂
浏览 152回答 2
2回答

jeck猫

训练后,从以所需层结尾的训练模型(模型)创建一个新模型(模型 2)。您可以使用图层名称执行此操作:(在model.summary() 中,你的dense 层'name' 有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)然后你可以使用预测preds=model2.predict(x)

慕森卡

layer.get_weights()将层的权重作为 numpy 数组返回,然后可以将其保存,例如使用np.save.要从 numpy 数组设置权重,layer.set_weights(weights)可以使用。您可以通过名称(model.get_layer(LAYER_NAME)或其编号 ( model.layers[LAYER_INDEX]))访问您的图层。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python