2014-12-23 3 views
0

두 개의 텐서 A와 B가 있는데 첫 번째 것은 크기 (500,10)이고 두 번째는 크기 (500)입니다. A/B를 찾고 싶습니다. 정규/연산자를 사용하고 있으며 Theano 컴파일러는 같은 크기 여야한다고 말합니다. 그런 다음 B에서 tensor.tile을 사용하여 A와 동일한 크기로 만들려고했습니다. 세 개의 매개 변수 (x, reps, ndim)가 있습니다. 다른 값을 시도하고 이러한 제약 조건으로 제한됩니다. x.ndim = len (reps) 및 ndim = len (reps) 그런 다음이 제약 조건을 어떻게 배열을 매트릭스에 타일링 할 수 있습니까?! 이게 Theano의 버그 야?타일링 테아 노 텐서

답변

1

방금 ​​방송 할 수 있으며 여러 가지 방법이 있습니다. 이렇게의 오류 방지 방법

AoverB = A/B[:, np.newaxis] 
AoverBalso = A/B.reshape((-1, 1)) 
AsoverBs = As/Bs.reshape((-1, 1)) 

다른 방법 패드 첫번째 축에 내재 방송가없는 경우가 있다는 사실을 활용하는 적절한 축 추가된다

import numpy as np 
A = np.arange(1., 5001., 1.).reshape(500, 10) 
B = np.arange(1., 501., 1.) 

import theano 
As = theano.shared(A) 
Bs = theano.shared(B) 

다음 예를 살펴 이 같은 일을 계산 모두, 우리가 사용하는 것을 보여주기 위해

AoverBT = A.T/B.T # no axis was added here 
AsoverBsT = As.T/Bs.T 

numpy.testing

,536,
from numpy.testing import assert_array_equal 
assert_array_equal(AoverB, AoverBalso) 
assert_array_equal(AoverB, AsoverBs.eval()) 
assert_array_equal(AoverB, AoverBT.T) 
assert_array_equal(AoverB, AsoverBsT.T.eval())