2016-11-30 15 views
0

这是我在theano代码为什么我错了连接矩阵和向量?

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) 

我所试图做的是与toReplace一行一行替换beReplaced。我这样做的方法是通过的上部concatenatev和的参与者。

v是行toReplace

以下是错误报告

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

toReplace分成non_sequences,否则每个时间步将只会占用一部分。 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)'并解决这个暗淡的问题。 一路感谢。 –

相关问题