2017-01-24 5 views
1

가 나는 문제 이러한 측정 조작이ResNet (3D에서 2D로)의 res5c 레이어를 재구성하는 방법은 무엇입니까?

(2048, 14, 14) 형상의 NumPy와 배열 초래 'res5c' 층 ResNet과 화상의 특징을 추출한다. 2048 크기의 14 * 14 기능이 있다는 것을 알고 있습니다. 한 번에 모든 기능에 액세스 할 수 있도록 반복하고 싶습니다.

따라서이 코드를 실수없이 (14 * 14, 2048)의 배열로 변형 한 다음 for 루프를 사용하여 쉽게 반복 할 수 있습니까?

+2

에 오신 것을 환영합니다 스택 오버플로! 먼저 [둘러보기] (http://stackoverflow.com/tour)를 가져 와서 [좋은 질문을하는 법] (http://stackoverflow.com/help/how-to-ask)을 배우고 [ Minimal, Complete, Verifiable] (http://stackoverflow.com/help/mcve) 예제를 참조하십시오. 우리가 당신을도 더 쉬울 것입니다. 지금까지 시도한 것을 보여주십시오. – MrLeeh

답변

0

당신은 net.forward() 후 기능을 읽을 수 있습니다 : 당신이 설명하는대로

feat = net.blobs['res5c'].data.cop() # copy to be on the safe side. 

featshape = (2048, 14, 14)np.array입니다.
당신은 그것을 reshape 수 있습니다

feat.reshape((2048,-1)) # fix the first dimension to 2048, -1 set the number of features to match that of `feat`. 

이제 기능을 반복 할 수 있습니다

for fi in xrange(feat.shape[1]): 
    f = feat[:,fi] # get the fi-th feature 
    # do somethinf to the feature f 
+0

잘 작동합니다. 만약 내가 완전히 이해한다면,이 방법은'(14, 14, 2048)'을 얻는가? 'x = x.reshape ((2048, -1))'then 'x = np.swapaxes (x, 0, 1)' 'x = x.reshape ((14,14,2048))' – Mickey

+0

@Mickey ['numpy.transpose'] (https://docs.scipy.org/doc/numpy/reference/generated)를보십시오. /numpy.transpose.html). 하지만 그렇게하고 싶니? 'feat [:, fi]'의 문제점은 무엇입니까? 데이터를 Matlab으로 내보내려고하십니까? – Shai

+0

파이썬으로 작업하고 있지만 어리석은 것입니다. 입력 텐서 형태 (W, H, Feature)로 받아들이는 함수를 사용하고 싶습니다. 나에 대한 지식이 부족해서 나에게 문제가 생겼다 :-) 나는 이걸 transpose로 할려고한다. – Mickey