한 쌍의 기능 맵 전체에서 2D 교차 컨볼 루션 (예 : MATLAB의 https://www.mathworks.com/help/signal/ref/xcorr2.html)을 수행해야합니다. 대한 명확한Tensorflow의 일괄 상호 상관
:
하자가 B x W1 x H1 x C
및 Y
이 B x W2 x H2 x C
될 수 X
.
B x W2 x H2 x 1
이다
출력의 i
번째 1 x W2 x H2 x 1
슬라이스가 X[i,:,:,:]
및 Y[i,:,:,:]
예컨대 간 교차 상관이다 (우리는 "필터"우리 SAME 패딩 Y
통해 통과 X
치료 가정)
tf.nn.conv2d(Y[i,:,:,:], X[i,:,:,:], [1,1,1,1], padding='SAME')
같은이 작업을 구현하기위한 효율적인 방법이 있나요?
참고 :
사실을 활용cross_corr = tf.nn.conv2d(
Y, tf.transpose(X, perm[1,2,3,0], [1,1,1,1], padding='SAME')
Tensorflow 간 상관 관계로 conv2d
을 구현하는 : X
가 1 x W1 x H1 x C
이며, 우리는 각 슬라이스 B
에서 Y
함께 교차 상관 관계를 원하는 경우,이 쉽다 그리고 우리는 작은 텐서를 본질적으로 전치 후에 필터로 취급 할 수 있다는 사실. B
다른 필터의 교차 회선을 취해야하기 때문에이 문제는 해결되지 않습니다.
아마도 conv3d가 가능할까요?
주 2 : 필터 채널이 입력 채널을 분리하는 경우 matconvnet의 vl_nnconv
이 수행합니다. Tensorflow에는 이에 상응하는 것이 있습니까?
답변 주셔서 감사합니다, 이것은 내가 찾고있는 것입니다. 'tf.expand_dims (inputs [0], 0)'을 호출 할 때 한 주석 (원래 응답에 대한 주석을 달 수있는 담당자가 충분하지 않음)은 추가 차원을 추가하지 않습니까? tf.nn.conv2d의 입력을 5D 텐서로 만들지 않을까요? 기타 : 혹시라도 이것을 실행 해 보셨습니까? 지도 기능이 GPU에서 실제로 병렬 처리됩니까? –
나는 달리는 것을 시도했다, 그것은 작동한다. 속도에 관해서는, 정직하게 아무 생각. 기본적으로 map (4D, 4D)는 각 (3D, 3D) 슬라이스에 함수를 적용하므로 기본적으로 '이미지 단위'기능을 사용합니다. 두 개의 'tf.expand_dims'는 (3D, 3D)를 (4D, 4D)로 변환하여 서로 얽혀 있습니다. 최종 결과는 5D 텐서이지만 2 차원이 1이므로 끝 부분에서 제거합니다. (나는 명확한 설명을 위해 나의 원래 대답을 주석으로 달았다) – Evariste