저는 Theano dvector
에 100 개의 요소가 있습니다. 또한 5 행 100 행 (즉, 각 열에는 100 개의 요소가 포함 된 행렬)이 있습니다.행렬의 각 열에 벡터로 요소를 곱하는 방법 Theano에서?
이제 벡터별로 각 열의 요소 별 곱셈을 적용해야합니다. Theano에서 올바른 방법은 무엇입니까?
내 벡터를 5 번 반복하고이 값을 전 환한 다음 요소 모양이 같은 두 행렬을 곱하면 새 행렬을 만들어야합니까?
내가 한 열이있는 2 차원 배열로 내 벡터를 선언 할 필요가, 내가 NumPy와에, 원하는 동작을 달성하는 것을 배웠습니다
을 추가했습니다. 즉, "열"- 벡터로 "행"벡터를 대체해야합니다 (또는 가로로 값 대신 세로로 값을 써야 함). 이 경우 numpy는 원하는대로 벡터 (열)를 브로드 캐스팅합니다 (내 행렬의 각 열에 내 벡터 요소를 현저하게 곱함). 이것은 내가 오류입니다
X = T.dmatrix('X')
w = np.array([
[10.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 10.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 10.0, 0.0, 0.0]
], dtype=th.config.floatX)
w = np.transpose(w)
W = th.shared(w, name='W', borrow=True)
R = W + X
f = th.function([X], R)
x = np.array([[1.0], [2.0], [3.0], [4.0], [5.0]])
print f(x)
: Theano는 NumPy와의이 동작을 상속하지 않습니다처럼 그러나 보이는
ValueError: Input dimension mis-match. (input[0].shape[1] = 3, input[1].shape[1] = 1)
Apply node that caused the error: Elemwise{add,no_inplace}(W, X)
Toposort index: 0
Inputs types: [TensorType(float64, matrix), TensorType(float64, matrix)]
Inputs shapes: [(5, 3), (5, 1)]
Inputs strides: [(8, 40), (8, 8)]
을 그건 그렇고을 나는 다음에 x
를 정의 할 경우, 코드가 작동 방법 :
x = np.array([[1.0, 1.0, 1.0], [2.0, 2.0, 2.0], [3.0, 3.0, 3.0], [4.0, 4.0, 4.0], [5.0, 5.0, 5.0]])