2016-11-30 3 views
0

이것은 내가 뭘하려고 오전 라인으로 toReplace 라인 beReplaced 교체입니다왜 행렬과 벡터를 연결하는 것이 잘못 되었습니까?

max_max=200 
beReplaced=T.matrix() 
toReplace=T.matrix() 
timeArray=T.arange(max_max) 


def f(v,k,w): 
    return T.concatenate([w[:k],v,w[k+1:]],axis=0) 

result,_=theano.scan(f, 
        sequences=[toReplace,timeArray], 
        outputs_info=beReplaced) 

theano 내 코드입니다. 내가하는 방식은 w, vlower parter의 상단 부분이 w입니다.

vtoReplace입니다. 여기

는 오류 보고서

Traceback (most recent call last): 
    File "/Users/qiansteven/Desktop/NLP/RNN/my.py", line 20, in <module> 
    outputs_info=np.zeros((5,5),dtype=np.float64)) 
    File "/usr/local/lib/python2.7/site-packages/theano/scan_module/scan.py", line 745, in scan 
    condition, outputs, updates = scan_utils.get_updates_and_outputs(fn(*args)) 
    File "/Users/qiansteven/Desktop/NLP/RNN/my.py", line 16, in f 
    return T.concatenate([a,b,c],axis=0) 
    File "/usr/local/lib/python2.7/site-packages/theano/tensor/basic.py", line 4225, in concatenate 
    return join(axis, *tensor_list) 
    File "/usr/local/lib/python2.7/site-packages/theano/gof/op.py", line 611, in __call__ 
    node = self.make_node(*inputs, **kwargs) 
    File "/usr/local/lib/python2.7/site-packages/theano/tensor/basic.py", line 3750, in make_node 
    axis, tensors, as_tensor_variable_args, output_maker) 
    File "/usr/local/lib/python2.7/site-packages/theano/tensor/basic.py", line 3816, in _make_node_internal 
    raise TypeError("Join() can only join tensors with the same " 
TypeError: Join() can only join tensors with the same number of dimensions. 

어떤 문제입니다 ???????????

답변

0

이 솔루션은 v.dimshuffle('x',0)을 연결하는 것으로 희미한 문제를 해결합니다.

0

non_sequencestoReplace을 넣으십시오. 그렇지 않으면 각 타임 스텝에서 슬라이스 만 차지합니다. 벡터와 행렬을 연결할 때 Theano가 오류를보고합니다.

def f(k,w,v): #NOTE the argument order change 
    return T.concatenate([w[:k],v,w[k+1:]],axis=0) 

result,_=theano.scan(f, 
        sequences=timeArray, 
        outputs_info=beReplaced, 
        non_sequences=toReplace) 
+0

바꾸기 위해 조각을 채우는 것이 내 목표이며, 바꿀 수는 없습니다. 그리고'toReplace'를'non_sequence'에 넣으면'output'의 모양이 바뀌어 무효가됩니다. 해결책은'v.dimshuffle ('x', 0)'을 연결하는 것이고 그것은 희미한 문제를 해결합니다. 감사합니다. –