2017-10-13 252 views
0

我對tensorflow很陌生,想知道是否可以調整張量內的單個維度。tensorflow - 調整尺寸

讓我有一個給定的張量T:

t = [[1, 10], [2, 20]] 
shape(t) = [2, 2] 

現在我要修改此張量的形狀,使:

shape(t) = [2, 3] 

到目前爲止,我剛發現的功能:

  • 重塑 - >此功能能夠以這種方式重塑張量,維度的總數保持不變相同的(據我理解)

    shape(t) = [1, 3] | [3, 1] | [4] 
    
  • expand_dims - >該功能能夠添加新的一維尺寸

    shape(t) = [1, 2, 2] | [2, 1, 2] | [2, 2, 1] 
    

是對我的描述目的的功能到位?如果不是:爲什麼? (也許它沒有意義有這樣的功能?)

親切的問候

+0

從(2,2)(2,3),你在張量兩個元素。他們應該從哪裏來,或者應該如何計算? – Psidom

+1

你能描述一下你試圖通過這麼做來達到什麼樣的目的,以及哪些數據應該填補額外空間?如果你想用零填充額外的空間,你可以像這樣使用tf.pad:'''tf.pad(t,[[0,0],[0,1]])''' –

+0

謝謝, tf.pad是我搜索的那個。 –

回答

0

使用tf.concat可以做到這一點。這是一個例子。

import tensorflow as tf 

t = tf.constant([[1, 10], [2, 20]], dtype=tf.int32) 
# the new tensor w/ the shape of [2] 
TBA_a = tf.constant([3,30], dtype=tf.int32) 
# reshape TBA_a to [2,1], then concat it to t on axis 1 (column) 
new_t = tf.concat([t, tf.reshape(TBA_a, [2,1])], axis=1) 

sess = tf.InteractiveSession() 
print(new_t.eval()) 

它會給我們

[[ 1 10 3] 
[ 2 20 30]]