我正在用Keras编写自动编码器:
inputs = Input((n_channels,))
l1 = Dense(40, activation="relu")(inputs)
l2 = Dense(19)(l1)
l3 = Dense(40, activation="relu")(l2)
training_layer = Dense(n_channels)(l3)
unify_layer = Model(inputs=inputs, outputs=l2)
training_layer = Model(inputs=inputs, outputs=training_layer)我使用training_layer进行训练,使用unify_layer进行预测,因此当我在保存后继续学习时,我希望能够访问这两个端点。
根据Marcin的评论进行编辑Model.save只允许我保存一个模型。当我调用时:
unify_layer.save("unify")
training_layer.save("training")然后
unify_layer = load_model("unify")
training_layer = load_model("training")两层不再相连,即当我训练training_layer时,unify_layer没有被训练。
发布于 2018-01-31 05:36:49
哦,我实际上可以使用save_weights和load_weights方法:
class Autoencoder():
def __init__(self):
inputs = Input((n_channels,))
l1 = Dense(40, activation="relu")(inputs)
l2 = Dense(19)(l1)
l3 = Dense(40, activation="relu")(l2)
training_layer = Dense(n_channels)(l3)
self.unify_layer = Model(inputs=inputs, outputs=l2)
self.training_layer = Model(inputs=inputs, outputs=training_layer)
def save(self, filename):
self.unify_layer.save_weights("unify_" + filename)
self.training_layer.save_weights("training_" + filename)
def load(self, filename):
self.unify_layer.load_weights("unify_" + filename)
self.training_layer.load_weights("training_" + filename)https://stackoverflow.com/questions/48530232
复制相似问题