tf.expand_dims和tf.squeeze函数简要解析

tf.expand_dims()

Function

tf.expand_dims(input, axis=None, name=None, dim=None)
在第axis位置增加一个维度

给定张量输入,此操作在输入形状的维度索引轴处插入1的尺寸。 尺寸索引轴从零开始; 如果您指定轴的负数,则从最后向后计数。

如果要将批量维度添加到单个元素,则此操作非常有用。 例如,如果您有一个单一的形状[height,width,channels],您可以使用expand_dims(image,0)使其成为1个图像,这将使形状[1,高度,宽度,通道]。

For example:

  1. # 't' is a tensor of shape [2]

  2. shape(expand_dims(t, 0)) ==> [1, 2]

  3. shape(expand_dims(t, 1)) ==> [2, 1]

  4. shape(expand_dims(t, -1)) ==> [2, 1]

  5. # 't2' is a tensor of shape [2, 3, 5]

  6. shape(expand_dims(t2, 0)) ==> [1, 2, 3, 5]

  7. shape(expand_dims(t2, 2)) ==> [2, 3, 1, 5]

  8. shape(expand_dims(t2, 3)) ==> [2, 3, 5, 1]

Args:

输入:张量。
轴:0-D(标量)。 指定扩大输入形状的维度索引。
名称:输出名称Tensor。
dim:0-D(标量)。 等同于轴,不推荐使用。

Returns:

tf.squeeze()

Function

tf.squeeze(input, squeeze_dims=None, name=None)
从tensor中删除所有大小是1的维度

给定张量输入,此操作返回相同类型的张量,并删除所有尺寸为1的尺寸。 如果不想删除所有尺寸1尺寸,可以通过指定squeeze_dims来删除特定尺寸1尺寸。
如果不想删除所有大小是1的维度,可以通过squeeze_dims指定。

For example:

 
  1. # 't' is a tensor of shape [1, 2, 1, 3, 1, 1]

  2. shape(squeeze(t)) ==> [2, 3]

  3. Or, to remove specific size 1 dimensions:

  4.  
  5. # 't' is a tensor of shape [1, 2, 1, 3, 1, 1]

  6. shape(squeeze(t, [2, 4])) ==> [1, 2, 3, 1]

Args:

输入:张量。 输入要挤压。
squeeze_dims:可选的ints列表。 默认为[]。 如果指定,只能挤压列出的尺寸。 维度索引从0开始。挤压不是1的维度是一个错误。
名称:操作的名称(可选)。

Returns:

张量。 与输入的类型相同。 包含与输入相同的数据,但具有一个或多个删除尺寸1的维度

另外补充一点:有时候会遇到axis=-1的情况,这里指的是默认的轴,它和reshape里边的-1有相似之处,都是要电脑自动判断。

猜你喜欢

转载自blog.csdn.net/qq_41853758/article/details/82718493