我想训练一个网络,然后将该网络用作特征提取器;所以我想将其保存为一个函数。
我知道如何保存训练后的模型并重用模型I,但是我想像使用函数一样将此训练后的模型用作新图的一部分,请参见下面的结构。
我想我可能需要将新图附加到旧模型图上并修复旧模型的参数。谁能给我一些如何做的想法?谢谢。
# define a graph and train a model called mdl in a session
# this mdl will be fixed used in the new graph
# start a new graph
cae_in = tf.placeholder(tf.float32,(None,a,b,1))
cae_out = tf.placeholder(tf.float32,(None,a,b,1))
# use this model to process my input
loss = mdl(cae_in) - cae_out
with tf.Session() as sess:
# run this sess
答案 0 :(得分:0)
我认为可以按照以下步骤操作:
您可能可以创建具有所需层和超参数的TF或Keras模型。我坚持使用TF Keras,因为它可以将模型保存为单个.h5
文件。
保存模型后,创建一个名为mdl
的新类,甚至创建一个方法。
使用此方法加载模型,并将输入(作为方法的参数提供)输入模型。
进行推理,进行处理并重塑形状,然后从该方法返回输出。
因此,您可以将模型封装在方法或类中。