资讯专栏INFORMATION COLUMN

tensorflow keras 查找中间tensor并构建局部子图

dreamans / 1230人阅读

摘要:但是对于自定义层的中间变量,就没办法获得了,因此需要使用方法二。通过逐层向上查找定义一个迭代函数,不断查找接着获得某层的输出调用迭代函数,找到该最后,调用构建局部图,并运行此时打印可以看到类似如下大功告成

在Mask_RCNN项目的示例项目nucleus中,stepbystep步骤里面,需要对网络模型的中间变量进行提取和可视化,常见方式有两种:

通过 get_layer方法:
outputs = [
    ("rpn_class", model.keras_model.get_layer("rpn_class").output),
    ("proposals", model.keras_model.get_layer("ROI").output)
    ]

此方法可以读取层的输出,对于输出多于1个tensor的,可以指定get_layer("rpn_class").output[0:2]等确定。
但是对于自定义层的中间变量,就没办法获得了,因此需要使用方法二。

通过 tensor.op.inputs 逐层向上查找

定义一个迭代函数,不断查找

def find_in_tensor(tensor,name,index=0):
    index += 1
    if index >20:
        return
    tensor_parent = tensor.op.inputs
    for each_ptensor in tensor_parent:
        #print(each_ptensor.name)
        if bool(re.fullmatch(name, each_ptensor.name)):
            print("find it!")
            return each_ptensor
        result = find_in_tensor(each_ptensor,name,index)
        if result is not None:
            return result

接着获得某层的输出,调用迭代函数,找到该tensor

pillar = model.keras_model.get_layer("ROI").output
nms_rois = find_in_tensor(pillar,"ROI_3/rpn_non_max_suppression/NonMaxSuppressionV2:0")
outputs.append(("NonMaxSuppression",nms_rois))

最后,调用kf.fuction构建局部图,并运行:

submodel = model.keras_model
outputs = OrderedDict(outputs)
if submodel.uses_learning_phase and not isinstance(K.learning_phase(), int):
    inputs += [K.learning_phase()]
kf = K.function(submodel.inputs, list(outputs.values()))
in_p,ou_p = next(train_generator)
output_all = kf(in_p)

此时打印outputs可以看到类似如下:

OrderedDict([("rpn_class",),
             ("proposals",),
             ("fpn_p2",),
             ("fpn_p3",),
             ("fpn_p4",),
             ("fpn_p6",),
             ("NonMaxSuppression",)])

大功告成~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43024.html

相关文章

  • Tensorflow代码解析(二)

    摘要:为了进一步了解的逻辑,图对和进行了展开分析。另外,在命名空间中还隐式声明了控制依赖操作,这在章节控制流中相关说明。简述是高效易用的开源库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。返回其中一块给用户,并将该内存块标识为占用。 3. TF 代码分析初步3.1 TF总体概述为了对TF有整体描述,本章节将选取TF白皮书[1]中的示例展开说明,如图 3 1所示是一个简单线性模型的TF...

    zhigoo 评论0 收藏0
  • 以静制动的TensorFlow Fold动态计算图介绍

    摘要:近日它们交锋的战场就是动态计算图,谁能在这场战争中取得优势,谁就把握住了未来用户的流向。所以动态框架对虚拟计算图的构建速度有较高的要求。动态计算图问题之一的多结构输入问题的高效计 随着深度学习的发展,深度学习框架之间竞争也日益激烈,新老框架纷纷各显神通,想要在广大DeepLearner的服务器上占据一席之地。近日它们交锋的战场就是动态计算图,谁能在这场战争中取得优势,谁就把握住了未来用户的流...

    waltr 评论0 收藏0
  • Tensorflow代码解析(四)

    摘要:联合查找算法是并查集数据结构一种应用。并查集是一种树型的数据结构,其保持着用于处理一些不相交集合的合并及查询问题。的特征是删除节点。目前就职于腾讯事业部,从事神经机器翻译工作。 5. TF - Graph模块TF把神经网络模型表达成一张拓扑结构的Graph,Graph中的一个节点表示一种计算算子。Graph从输入到输出的Tensor数据流动完成了一个运算过程,这是对类似概率图、神经网络等连接...

    马龙驹 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<