来自sess.run(()的模型权重以字节为单位返回值.我怎样才能改变价值?



我试图从.pb文件中保存的模型中提取模型权重。但是,当我运行sess时,它以字节为单位返回模型权重,我无法读取它。我的代码如下:

constant_values = {}
with tf.compat.v1.Session(graph=tf.Graph()) as sess:
meta_graph = tf.compat.v1.saved_model.loader.load(sess,[tf.compat.v1.saved_model.tag_constants.SERVING],'model_2/1/')
tf.import_graph_def(meta_graph.graph_def, name='')
constant_ops = [op for op in sess.graph.get_operations() if op.type == "Const"]
x=0
for constant_op in constant_ops:
x = constant_op.outputs[0]
value =  sess.run(constant_op.outputs[0])
constant_values[constant_op.name] = valu

print(constant_op.name, value)

这里是它返回的一部分:

b'nx1bntx08x01x12x05modelnx0ex08x02x12nsignaturesnxe2x01nx18x08x03x12x14layer_with_weights-0nx0bx08x03x12x07layer-0nx0bx08x04x12x07layer-1nx18x08x05x12x14layer_with_weights-1nx0bx08x05x12x07layer-2nrx08x06x12tvariablesnx17x08x07x12x13trainable_variablesnx19x08x08x12x15regularization_lossesnrx08tx12tkeras_apinx0ex08nx12nsignaturesn#x08x0bx12x1f_self_saveable_object_factoriesnx00nx92Rnx0bx08x0cx12x07layer-0nx0bx08rx12x07layer-1nx18x08x0ex12x14layer_with_weights-0nx0bx08x0ex12x07layer-2nx0bx08x0fx12x07layer-3nx18x08x10x12x14layer_with_weights-1nx0bx08x10x12x07layer-4nx18x08x11x12x14layer_with_weights-2...

感谢

你确定在你的图中具有模型权重的常量变量被命名为'Const'吗?

如果您只是从如何在其他地方获得模型权重的教程中复制了这段代码-正如我过去所看到的-请尝试以下操作:

不用constant_ops = [op for op in sess.graph.get_operations() if op.type == "Const"],试试constant_ops = [op for op in sess.graph.get_operations()],看看图中所有的张量和操作是什么样子的。您可能会发现权重节点的命名方式不同。

,

相关内容

  • 没有找到相关文章

最新更新