python - 如何在 TensorFlow 2 中保存/加载模型的一部分?

标签 python tensorflow keras tensorflow2.0 autoencoder

我在 TensorFlow 2 中制作了一个自动编码器。首先,我需要在数据集上训练模型。训练自动编码器后,我想将自动编码器的编码器部分用于不同的数据集,同时保留经过训练的权重。有办法吗?我找不到一个。任何指导方针都会有所帮助。这是我正在尝试使用的粗略自动编码器:

from tensorflow.keras.layers import Input, Dense
from tensorflow.keras import Model

def Autoencoder():
    # Encoder
    inp = Input(shape=(100,))
    x = Dense(1000)(inp)
    x = Dense(500)(x)
    code = Dense(10)(x)

    # Decoder    
    x = Dense(500)(code)
    x = Dense(1000)(x)
    out = Dense(100)(x)

    model = Model(inp,out)
    return model

autoencoder = Autoencoder()

最佳答案

如果您只想使用编码器部分,您可以编写一个 CustomCheckpoint 类并像下面这样保存编码器。

class CustomCheckpoint(Callback):

def __init__(self, filepath, encoder):
    self.monitor = 'val_loss'
    self.monitor_op = np.less
    self.best = np.Inf

    self.filepath = filepath
    self.encoder = encoder

def on_epoch_end(self, epoch, logs=None):
    current = logs.get(self.monitor)
    if self.monitor_op(current, self.best):
        self.best = current
        # self.encoder.save_weights(self.filepath, overwrite=True)
        self.encoder.save(self.filepath, overwrite=True) # Whichever you prefer  

要从保存的权重加载编码器部分,您可以执行如下代码。

from keras.models import load_model
autoencoder = load_model("path_to_file")
encoder = Model(autoencoder.layers[0].input, autoencoder.layers[1].output)

关于python - 如何在 TensorFlow 2 中保存/加载模型的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60286080/

相关文章:

python - cuda 的 tensorflow 错误

python - AttributeError : 'IntegrityError' object has no attribute 'message' SQLAlchemy

python - Python的multiprocessing包中,为什么会有multiprocessing.Pool和multiprocessing.pool.Pool?

python - tensorflow:RStudio 中的 [NOT FOUND] 错误

gpu - 具有多个 GPU 的 Tensorflow 多个 session

python - 如何使用不同的输入维度执行 KerasClassifier 模型选择

python - 绘制热图,其颜色是函数 x,y -> r,g,b 的结果

python -\b 在 python 的 re 和精确词匹配

python - 当我尝试在 keras 模型中嵌入序列数据时,如何解决 'could not convert string to float:' 错误

python - Keras 双向 LSTM - 层分组