2016-01-31 5 views
2

В настоящее время я пытаюсь изучить theano.Theano Tensor удалить элемент?

Есть ли способ, например, удалить/добавить строку/столбец из тензора NxN? Функциональность subtensor, выделенная в документации, только изменяет элементы, а не удаляет их.

ответ

3

Сутенер позволяет принимать участие в тензоре. Это set_subtensor и inc_subtensor, которые позволяют модифицировать часть из них.

Theano поддерживает индексацию Python и NumPy и расширенную индексацию. Вы можете делать то, что хотите, разными способами. Вот простой:

import theano, numpy 
T = theano.tensor.matrix() 
f = theano.function([T], T[[1, 2, 4]]) 
f(numpy.arange(25).reshape(5, 5)) 

Так в основном, вы можете просто передать список с индексом строк, которые вы хотите сохранить. Для colums, просто используйте:

import theano, numpy 
T = theano.tensor.matrix() 
f = theano.function([T], T[:, [1, 2, 4]]) 
f(numpy.arange(25).reshape(5, 5)) 

Чтобы добавить строки, мы поддерживаем тот же интерфейс, как NumPy, поэтому в основном, вы можете просто построить новый тензор конкатенации части, которую вы хотите:

import theano, numpy 
T = theano.tensor.matrix() 
o = theano.tensor.concatenate([T[2], T[4], [100, 101, 102, 103, 104]]) 
f = theano.function([T], o) 
f(numpy.arange(25).reshape(5, 5)) 
+0

спасибо для краткого ответа, но почему это не работает с anano.tensor.vector()? – user2255757

+0

Это также может работать с vector(). Но какая у вас ошибка? Без кода и ошибки у вас есть, очень сложно сказать вам, в чем проблема. Вероятно, это небольшая деталь, которая вызывает у вас проблемы. – nouiz

+0

ах я понял, нарезка вектора может возвращать только такой элемент, как T [3], а не меньший вектор, такой как T [1,2,3], как с матрицей T [[1,2,3]]. еще раз спасибо – user2255757

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