TensorFlow用expand_dim()來增加維度

TensorFlow中,想要維度增加一維,可以使用tf.expand_dims(input, dim, name=None)函數。當然,我們常用tf.reshape(input, shape=[])也可以達到相同效果,但是有些時候在構建圖的過程中,placeholder沒有被feed具體的值,這時就會包下面的錯誤:TypeError: Expected binary or unicode string, got 1
在這種情況下,我們就可以考慮使用expand_dims來將維度加1。比如我自己代碼中遇到的情況,在對圖像維度降到二維做特定操作後,要還原成四維[batch, height, width, channels],前後各增加一維。如果用reshape,則因爲上述原因報錯

one_img2 = tf.reshape(one_img, shape=[1, one_img.get_shape()[0].value, one_img.get_shape()[1].value, 1])

用下面的方法可以實現:

one_img = tf.expand_dims(one_img, 0)
one_img = tf.expand_dims(one_img, -1) #-1表示最後一維

在最後,給出官方的例子和說明

# 't' is a tensor of shape [2]
shape(expand_dims(t, 0)) ==> [1, 2]
shape(expand_dims(t, 1)) ==> [2, 1]
shape(expand_dims(t, -1)) ==> [2, 1]

# 't2' is a tensor of shape [2, 3, 5]
shape(expand_dims(t2, 0)) ==> [1, 2, 3, 5]
shape(expand_dims(t2, 2)) ==> [2, 3, 1, 5]
shape(expand_dims(t2, 3)) ==> [2, 3, 5, 1]

Args:
input: A Tensor.
dim: A Tensor. Must be one of the following types: int32, int64. 0-D (scalar). Specifies the dimension index at which to expand the shape of input.
name: A name for the operation (optional).

Returns:
A Tensor. Has the same type as input. Contains the same data as input, but its shape has an additional dimension of size 1 added.

發佈了41 篇原創文章 · 獲贊 192 · 訪問量 73萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章