nn.Flatten()函数详解及示例_nn.flatten

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

torch.nn.Flatten(start_dim=1end_dim=- 1)

作用将连续的维度范围展平为张量。 经常在nn.Sequential()中出现一般写在某个神经网络模型之后用于对神经网络模型的输出进行处理得到tensor类型的数据。

 有俩个参数start_dim和end_dim分别表示开始的维度和终止的维度默认值分别是1和-1其中1表示第一维度-1表示最后的维度。结合起来看意思就是从第一维度到最后一个维度全部给展平为张量。注意数据的维度是从0开始的也就是存在第0维度第一维度并不是真正意义上的第一个

同理如果我这么写

self.flat = nn.Flatten(start_dim=2, end_dim=3)

那么意思就是从第二维度开始到第三维度全部给展平也就是将2、3两个维度展平。

官网给出的示例

input = torch.randn(32, 1, 5, 5)
# With default parameters
m = nn.Flatten()
output = m(input)
output.size()
#torch.Size([32, 25])
# With non-default parameters
m = nn.Flatten(0, 2)
output = m(input)
output.size()
#torch.Size([160, 5])

#开头的代码是注释

整段代码的意思是给定一个维度为32155的随机数据。

1.先使用一次nn.Flatten()使用默认参数

m = nn.Flatten()

也就是说从第一维度展平到最后一个维度数据的维度是从0开始的第一维度实际上是数据的第二个位置代表的维度也就是样例中的1。

因此进行展平后的结果也就是[321×5×5]➡[3225]

2.接着再使用一次指定参数的nn.Flatten()即

m = nn.Flatten(0, 2)

也就是说从第0维度展平到第2维度0~2对应的也就是前三个维度。

因此结果就是[32×1×55]➡[1605]

因此进行展平后的结果也就是[321*5*5]➡[3225]

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6