修改张量流中的预训练模型

时间:2018-08-23 07:38:34

标签: python tensorflow

我想知道如何对从tensorflow的meta和checkpoint文件加载的图形进行更改:

saver = tf.train.import_meta_graph('***.meta') saver.restore(sess,tf.train.latest_checkpoint('./'))

例如,现有图形中有 old_layer1-> old_layer2 个具有预训练权重的图形。我要插入一个,然后它变成 old_layer1-> new_layer-> old_layer2 ,并且 new_layer 被随机初始化,因为没有预训练的参数。答案here说这是不可能的,因为tf的图形只允许添加,这是真的吗?

因此,我想知道是否可以通过以下方式来解决此问题:将预训练的图层作为单独的变量加载,并将预训练的权重分配为初始值并由我自己进行连接,以便在旧的图层之间添加新的图层。但是我不知道如何在代码中做到这一点。

1 个答案:

答案 0 :(得分:1)

使用原始张量流执行此操作可能会很复杂,因为tf图不会直接编码层的结构。但是,如果您的模型是使用tf.keras构建的,那么这非常简单,因为加载keras模型也会加载其图层结构。