tf。在TensorFlow中分配给协议缓冲区冻结模型

时间:2018-06-21 06:41:52

标签: python tensorflow protocol-buffers assign

还原预先训练的模型时,我可以使用tf.assigntf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES)将新值分配给张量:

>>>sess.run(tf.assign([v for v in tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES) if v.name == 'LAYER_NAME'][0], New_Value_FOR_LAYER_NAME))

但是,如果冻结的模型(.pb)文件的所有变量均为const格式,则使用tf.assigntf.get_default_graph().get_operations()的等效文件不会产生任何结果:

>>>sess.run(tf.assign([v for v in tf.get_default_graph().get_operations() if v.name == 'LAYER_NAME'][0], New_Value_FOR_LAYER_NAME))

我认为根本原因是预先训练的模型有tf.Tensor而冻结的模型有tf.Operation

>>>[v for v in tf.get_default_graph().get_operations() if v.name == 'softmax/weights_quint8_const']
[<tf.Operation 'softmax/weights_quint8_const' type=Const>]

然后,在冻结模型中为tf.Operation分配新值的正确方法是什么。

0 个答案:

没有答案