2017-02-01 2 views
0

Скажет, у меня есть тензор с формой (?, 5, 1, 20)Как заменить размер тензора в тензорном потоке?

Для каждого совпадения последнего размера я сделать некоторые вычисления (получение значений K макс) на последнее измерение, которое производит меньший тензор б , Что делать, если вы хотите заменить последнее измерение моего первоначального тензора на b?

Какой (предпочтительно чистый тензорный поток) путь?

ответ

1

Вы делаете некоторые вычисления в последнем измерении ... То есть вы хотите перейти от (?, 5, 1, 20) -> (?, 5, 1, b), если я правильно понял?

Какое вычисление?

Вы можете изменить свой тензор, выполнить вычисление (например, умножение матрицы) и изменить форму обратно.

a = tf.reshape(X, [-1, 20]) 
a = tf.matmul(a, X) 
a = tf.reshape(a, [-1, b]) 

Или вы могли бы использовать tf.einsum() добиться подобного подвига. Для нелинейных вычислений зависит то, что вы хотите сделать.

EDIT: Также вы можете взломать его с помощью Conv2D и использовать фильтр размера [1,1, 20, b]. Делает то же самое и более эффективно

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