flatten层的作用

举报
Nikolas 发表于 2020/10/30 10:10:13 2020/10/30
【摘要】 flatten是用来对数组进行展平操作的,首先我们假设有一张灰度图片,这个图片只有3x3个像素点,分别是从1到9,我们对其进行flatten操作。首先它会把每1行进行分开,然后用第2行接在第1行后面,形成一个新的数组1,2,3,4,5,6,最后再把第3行的7,8,9接在新生成的数组后面形成最终的数组。接下来我们来验证一下我们的猜想。首先导入numpy包,用它来创建一个3x3的二维数组a,并将...

flatten是用来对数组进行展平操作的,首先我们假设有一张灰度图片,这个图片只有3x3个像素点,分别是从1到9,我们对其进行flatten操作。首先它会把每1行进行分开,然后用第2行接在第1行后面,形成一个新的数组1,2,3,4,5,6,最后再把第3行的7,8,9接在新生成的数组后面形成最终的数组。

接下来我们来验证一下我们的猜想。首先导入numpy包,用它来创建一个3x3的二维数组a,并将a打印出来。

import numpy as np
a = np.array([[1,2,3],
              [4,5,6],
              [7,8,9]])
print(a)
[[1 2 3]
 [4 5 6]
 [7 8 9]]

然后我们将a进行flatten操作,赋值为b,然后把b打印出来。

b = a.flatten()
print(b)
[1 2 3 4 5 6 7 8 9]

我们可以看到,经过flatten操作之后,本来3行的数组变成了1行。最后我们打印一下a和b的形状,看看是不是从3行变成了1行。

print(a.shape)
print(b.shape)
(3, 3)
(9,)

如果是彩色图片的话,它会有3个颜色通道,进行fltten时的步骤也是一样的。分别把每个通道展平,然后将第2个通道接在第1个通道后面,再将第3个通道接在第2个通道后面。

c = np.array([[[1,2,3],
              [4,5,6],
              [7,8,9]],
            [[1,2,3],
              [4,5,6],
              [7,8,9]],
            [[1,2,3],
              [4,5,6],
              [7,8,9]]])
print(c)
[[[1 2 3]
  [4 5 6]
  [7 8 9]]

 [[1 2 3]
  [4 5 6]
  [7 8 9]]

 [[1 2 3]
  [4 5 6]
  [7 8 9]]]

打印展平后的数组,看一下是不是已经展平成了1行

d = c.flatten()
print(d)
[1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9]

看一下展平前后的数组形状

print(c.shape)
print(d.shape)
(3, 3, 3)
(27,)

flatten操作虽然原理非常简单,但是在深度学习中却经常用到,是一个必须要掌握的知识点。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。