x.view(x.size(0),-1)和torc.nn.Flatten()层和torc.Flatten(x)之间有什么

  • 本文关键字:torc Flatten 层和 之间 size view nn python pytorch
  • 更新时间 :
  • 英文 :


我很好奇像这里的简单代码一样使用view(,-1(和flatten有什么区别:

因为我发现大小和数据都是一维的。

import torch
from torch import nn
from torch.utils.data import DataLoader
from torchvision import datasets
from torchvision.transforms import ToTensor, Lambda, Compose
import matplotlib.pyplot as plt
x = torch.rand(3,256,256)
x.size()
a = x.view(x.size(0), -1)
print('after view:',a.size())
m = nn.Sequential(nn.Flatten())
y = m(x)
print('after nn flatten:',y.size())
z = torch.flatten(x)
print('after torch flatten:',y.size())

而且,=和=之间似乎没有区别。contractive表示:返回内存中的连续张量,该张量包含与自身张量相同的数据。但对我来说,它似乎只是返回自张量,而不是具有相同数据的复制或新张量。

c = y
print(c)
b = y.contiguous()
print(b)
# change original data
y[0][0]=1
print(b)
print(c)
print(y)

视图是一种在不修改数据本身的情况下修改查看数据的方式:

  • torch.view返回数据视图:数据不被复制,只有";窗口";查看数据更改
  • CCD_ 2从多维输入返回一维输出。如果

[输入]可以被视为扁平形状(源(

  • torch.nn.Flatten只是围绕torch.flatten的一个方便包装器

连续数据只是意味着数据在内存中是线性可寻址的,例如,对于二维数据,这意味着元素[i][j]位于位置i * num_columns + j。如果已经是这种情况,那么.contiguous将不会更改您的数据或复制任何内容。

最新更新