1. 程式人生 > >tf.reshape()的用法與理解

tf.reshape()的用法與理解

tf.reshape(tensor, shape, name=None)
函式的作用是將tensor變換為引數shape的形式。 其中shape為一個列表形式,特殊的一點是列表中可以存在-1。

轉換為一般的shape(也就是不涉及-1的)我這裡就不說了,主要說一下對-1的理解。
-1代表的含義是不用我們自己指定這一維的大小,函式會自動計算,但列表中只能存在一個-1。
(當然如果存在多個-1,就是一個存在多解的方程了)

我理解的要點是:首先shape就是reshape變換後的矩陣大小,先不管-1的那一個維度,先看其它維度,然後用原矩陣的總元素個數除以確定的維度,就能得到-1維度的值。

我們來看例子。

M=np.array([[[[1
,2,3]]],[[[4,5,6]]],[[[7,8,9]]]]) #M是[3,1,1,3]的四維矩陣 我想把M重組成若干個3維的向量,那麼直接tf.reshape(M,[-1,3]) 那麼會得到幾個3維向量呢? M一共有9個元素,9/3=3,那麼得到3個三維向量,那麼結果就是[3,3]的矩陣。
那麼我想得到若干個[3,3]的矩陣,那麼我們tf.reshape(M,[-1,3,3])

那麼結果就是[1,3,3]的矩陣