gpt4 book ai didi

tensorflow - 比较两个 Tensorflow 图

转载 作者:行者123 更新时间:2023-12-02 01:00:42 28 4
gpt4 key购买 nike

比较两个 GCMLE 部署的预测模型并识别其图表中的差异的最简单方法是什么?我已经目视检查了两个张量板,它们看起来完全一样(它们应该是一样的)。但是,我有代码来可视化它们的激活(基本上只是从图中加载权重并手动执行所有前向步骤)并且在其中一张图的某个地方我手写的前向传递计算与 tensorflow 的前向传递计算不同。用于训练模型的代码应该是相同的,但相同的前向传播似乎只对其中一个模型是准确的。有没有办法比较结构?

除了检查张量板,我还分别尝试了以下方法:

model1_tensors = [n.name for n in tf.get_default_graph().as_graph_def().node]
model2_tensors = [n.name for n in tf.get_default_graph().as_graph_def().node]

最终,基于比较 set() 差异,张量名称等也没有明显差异(表明它们是同一个图):[n.name for n in tf.get_default_graph( ).as_graph_def().node] 为每个 saved_models。

鉴于相同的前向传递代码会为一个模型产生准确的结果,而不会为另一个模型产生准确的结果,我非常相信这些图是不同的,但我在摸索着指出差异是什么。

更进一步,我实际上有信心我知道计算发生分歧的确切层(它与批量规范层有关),所以如果有一种方法可以输出进入特定层的所有张量,那么我也许能够确定还有其他事情正在做。

最佳答案

我发现的最佳方法是获取 GraphDef 对象并使用 tensorflow 测试比较它们..

with tf.Session(graph=tf.Graph()) as sess:
tf.saved_model.loader.load(sess, [tf.saved_model.tag_constants.SERVING], _VERSION_2)
graph_1 = tf.get_default_graph().as_graph_def()

with tf.Session(graph=tf.Graph()) as sess:
tf.saved_model.loader.load(sess, [tf.saved_model.tag_constants.SERVING], _VERSION_2)
graph_2 = tf.get_default_graph().as_graph_def()

然后我可以用这些来比较两个图:

from tensorflow.python import pywrap_tensorflow
diff = pywrap_tensorflow.EqualGraphDefWrapper(graph_65.SerializeToString(), # actual
graph_60.SerializeToString()) # expected
print(diff)

这确实显示了一个差异,但并没有显示所有差异。

关于tensorflow - 比较两个 Tensorflow 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50710474/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com