2015-12-08 1 views
1

Кто-нибудь знает способ объединения тензорной переменной (содержащей векторы) в anano в другую переменную, которая ссылается на оригиналы, похожие на itertools.chain?Любой способ совместить тектонические тензорные векторы, похожие на itertools.chain?

Прямо сейчас я не могу получить результат, где z = T.concatenate([x,y]) результатов, где z.shape [0] = shape x.shape [0] + y.shape [0]. Это всегда заканчивается тем, что z имеет ту же форму, что и x.

Буду признателен за любую помощь, которую вы можете предоставить.

ответ

1

Демонстрация theano.tensor.concatenate. Вы можете использовать параметр axis, чтобы настроить, какое измерение конкатенируется.

import theano 
import theano.tensor as tt 

x, y = tt.matrices('x', 'y') 
z1 = tt.concatenate([x, y]) 
z2 = tt.concatenate([x, y], axis=0) 
z3 = tt.concatenate([x, y], axis=1) 
f = theano.function([x, y], [z1, z2, z3]) 
for output in f([[1, 2], [3, 4]], [[5, 6], [7, 8]]): 
    print output.shape 

Печатается

(4L, 2L) 
(4L, 2L) 
(2L, 4L) 

Так что я не в состоянии воспроизвести заявленную поведение. Использование z = tt.concatenate([x, y]) дает один тензор, который имеет z.shape[0] = x.shape[0] + y.shape[0] по желанию.

+0

Извините, только что вернулся к этому. Просто отлаживая его без оптимизации, кажется, что ошибка происходит где-то выше в цепочке. Я на самом деле играю с реализацией Autoencoder, собранной в Theano, пытаясь объединить самые верхние выходные узлы из двух разных стеков. По-видимому, это самые младшие входные узлы, которые имеют некоторые проблемы. – Enzo

+0

Извините, но похоже, что ошибка на самом деле произошла из другой точки дерева узлов. Конкатенации работали правильно, используя как exo.concatenate, так и оператор +. – Enzo

Смежные вопросы