caffe 從模型中獲取中間層的輸出

2021-09-11 03:56:48 字數 1199 閱讀 3637

首先需要兩個檔案:

1. caffemodel 和 deploy.prototxt

2. 網路輸入的資料檔案以及需要輸出的那一層的名字

下面以vgg_face為例:   (我需要獲取pool5的輸出)

#coding=utf-8

import sys

sys.path.insert(1,'/home/develop/caffe/python')

import caffe

import cv2

import numpy as np

im_path = "../ak.png"

#設定gpu執行,如果在cpu下的話直接注釋掉就行

caffe.set_mode_gpu()

deploy='../vgg_face_deploy.prototxt' #deploy檔案

caffe_model= '../vgg_face.caffemodel' #訓練好的 caffemodel

net = caffe.net(deploy,caffe_model,caffe.test)

im = cv2.imread(im_path)

im = cv2.resize(im,(224,224))

'''預處理部分,需要與網路訓練的時候一致'''

transformer = caffe.io.transformer()

transformer.set_transpose('data', (2, 0, 1)) #將由(224,224,3)轉換成(3,224,224)

transformer.set_mean('data', np.array((93.5940,104.7624,129.1863))) #設定mean value,按通道減去均值。

im = transformer.preprocess('data', im)

net.blobs['data'].data[0] = im

out = net.forward(end='pool5') #end=『out layer name』,指定需要獲取輸出的層,我這裡是vgg的『pool5』層。

#print out #輸出為乙個字典,

output = out['pool5']

print output

後面的步驟就是將你的輸出儲存以便進行其他的操作。

pytorch獲取模型的中間層輸出結果

在inference階段,整個模型會load到gpu上,進行端到端的計算,通常只會給你輸出乙個最終結果。如果想要獲取模型的中間層輸出,則需要在計算前標定目標層位置 通過forward返回 或者把模型在那層截斷 當作乙個小模型 輸出def forward self,x layer1 out self....

WCF RIA 服務 (七) 中間層 簡介

在3 層結構的應用程式中,中間層包含了如何管理在表示層和資料層之間互動的邏輯。我們在中間層應用商業邏輯和驗證來確定資料是可接受的。例如,在人力資 源應用程式中,我們可以提供乙個允許員工提交休假申請的介面,但我們應該確定員工的可休假額度不小於0。因此,我們在提交申請之前,在中間層新增邏輯來檢 測員工的...

keras 如何獲得中間層的輸出???

剛開始接觸keras的時候,覺得這個框架很方便使用,就像搭積木一樣,但有時候為了理解模型中間的資料流向,摸清楚模型內部的資料傳輸是什麼樣子的就有點麻煩。事實上,keras也為我們提供了方法,其中最簡單的方法就是在原來的模型之外在建立乙個小型的模型,擷取原始模型從輸入層到你你感興趣的那一層作為新模型的...