成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

tensorflow keras 查找中間tensor并構(gòu)建局部子圖

dreamans / 1264人閱讀

摘要:但是對(duì)于自定義層的中間變量,就沒(méi)辦法獲得了,因此需要使用方法二。通過(guò)逐層向上查找定義一個(gè)迭代函數(shù),不斷查找接著獲得某層的輸出調(diào)用迭代函數(shù),找到該最后,調(diào)用構(gòu)建局部圖,并運(yùn)行此時(shí)打印可以看到類(lèi)似如下大功告成

在Mask_RCNN項(xiàng)目的示例項(xiàng)目nucleus中,stepbystep步驟里面,需要對(duì)網(wǎng)絡(luò)模型的中間變量進(jìn)行提取和可視化,常見(jiàn)方式有兩種:

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

此方法可以讀取層的輸出,對(duì)于輸出多于1個(gè)tensor的,可以指定get_layer("rpn_class").output[0:2]等確定。
但是對(duì)于自定義層的中間變量,就沒(méi)辦法獲得了,因此需要使用方法二。

通過(guò) tensor.op.inputs 逐層向上查找

定義一個(gè)迭代函數(shù),不斷查找

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

接著獲得某層的輸出,調(diào)用迭代函數(shù),找到該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))

最后,調(diào)用kf.fuction構(gòu)建局部圖,并運(yùn)行:

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)

此時(shí)打印outputs可以看到類(lèi)似如下:

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

大功告成~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43024.html

相關(guān)文章

  • Tensorflow代碼解析(二)

    摘要:為了進(jìn)一步了解的邏輯,圖對(duì)和進(jìn)行了展開(kāi)分析。另外,在命名空間中還隱式聲明了控制依賴(lài)操作,這在章節(jié)控制流中相關(guān)說(shuō)明。簡(jiǎn)述是高效易用的開(kāi)源庫(kù),有效支持線(xiàn)性代數(shù),矩陣和矢量運(yùn)算,數(shù)值分析及其相關(guān)的算法。返回其中一塊給用戶(hù),并將該內(nèi)存塊標(biāo)識(shí)為占用。 3. TF 代碼分析初步3.1 TF總體概述為了對(duì)TF有整體描述,本章節(jié)將選取TF白皮書(shū)[1]中的示例展開(kāi)說(shuō)明,如圖 3 1所示是一個(gè)簡(jiǎn)單線(xiàn)性模型的TF...

    zhigoo 評(píng)論0 收藏0
  • 以靜制動(dòng)的TensorFlow Fold動(dòng)態(tài)計(jì)算圖介紹

    摘要:近日它們交鋒的戰(zhàn)場(chǎng)就是動(dòng)態(tài)計(jì)算圖,誰(shuí)能在這場(chǎng)戰(zhàn)爭(zhēng)中取得優(yōu)勢(shì),誰(shuí)就把握住了未來(lái)用戶(hù)的流向。所以動(dòng)態(tài)框架對(duì)虛擬計(jì)算圖的構(gòu)建速度有較高的要求。動(dòng)態(tài)計(jì)算圖問(wèn)題之一的多結(jié)構(gòu)輸入問(wèn)題的高效計(jì) 隨著深度學(xué)習(xí)的發(fā)展,深度學(xué)習(xí)框架之間競(jìng)爭(zhēng)也日益激烈,新老框架紛紛各顯神通,想要在廣大DeepLearner的服務(wù)器上占據(jù)一席之地。近日它們交鋒的戰(zhàn)場(chǎng)就是動(dòng)態(tài)計(jì)算圖,誰(shuí)能在這場(chǎng)戰(zhàn)爭(zhēng)中取得優(yōu)勢(shì),誰(shuí)就把握住了未來(lái)用戶(hù)的流...

    waltr 評(píng)論0 收藏0
  • Tensorflow代碼解析(四)

    摘要:聯(lián)合查找算法是并查集數(shù)據(jù)結(jié)構(gòu)一種應(yīng)用。并查集是一種樹(shù)型的數(shù)據(jù)結(jié)構(gòu),其保持著用于處理一些不相交集合的合并及查詢(xún)問(wèn)題。的特征是刪除節(jié)點(diǎn)。目前就職于騰訊事業(yè)部,從事神經(jīng)機(jī)器翻譯工作。 5. TF - Graph模塊TF把神經(jīng)網(wǎng)絡(luò)模型表達(dá)成一張拓?fù)浣Y(jié)構(gòu)的Graph,Graph中的一個(gè)節(jié)點(diǎn)表示一種計(jì)算算子。Graph從輸入到輸出的Tensor數(shù)據(jù)流動(dòng)完成了一個(gè)運(yùn)算過(guò)程,這是對(duì)類(lèi)似概率圖、神經(jīng)網(wǎng)絡(luò)等連接...

    馬龍駒 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<