如何保存孪生模型的基础网络?

问题描述

我正在尝试构建一个具有相当复杂基础网络的 siamese 模型。构建基础网络后,我使用以下代码构建我的siamese网络:

base_network=create_base_model(0.2)
img1=Input(shape=(256,256,3))
img2=Input(shape=(256,3))
text_input1 = Input(shape=(),dtype=tf.string,name='text_1')
text_input2 = Input(shape=(),name='text_2')
output1= base_network([img1,text_input1])
output2= base_network([img2,text_input2])
distance = Lambda(euclidean_distance)([output1,output2])
siamese_model = Model([[img1,text_input1],[img2,text_input2]],distance)

基础网络的输出形式为 model where

model=Model(inputs=[input1,input2],outputs=[z])

问题是在训练了孪生网络之后,我想使用基础网络的输出作为嵌入,以便我可以运行无监​​督学习算法。但是,在训练 siamese 网络时,我想一次训练它 10 个 epochs,然后保存它并在需要时继续训练。 在这种情况下,当我保存和重新加载 Siamese 模型时,我不确定如何保存/访问基础网络。 例如,我得到了需要 2 个输入的 siamese 模型的以下图(我的基本模型使用 2 个输入,因此从技术上讲,我有 4 个输入,如图所示),但我想使用仅需要 1 个训练后输入的基本模型(技术上为 2,因为我的基本模型使用 2)。

任何人都可以就如何使用保存的 siamese 模型加载更新的基础模型给我建议,或者是否有更好的方法来首先保存它?

非常感谢。

enter image description here

解决方法

if epoch %5 == 0 
   path = f'/tmp/model{epoch}.h5'
   base_network.save(path)

base_network = tf.keras.models.load_model(path)

这样不行吗?