pytorch 中的view 引數使用方法

2021-09-04 05:29:07 字數 845 閱讀 4779

最近在看pytorch **時發現了使用了view 這個引數。一開始還不知道是啥。檢視之後發現原來跟 keras 中的flat和reshape 類似。

class net(nn.module):

def __init__(self):

super(net, self).__init__()

self.conv1 = nn.conv2d(3, 6, 5)

self.pool = nn.maxpool2d(2,2)

self.conv2 = nn.conv2d(6, 16, 5)

self.fc1 = nn.linear(16*5*5, 120)

self.fc2 = nn.linear(120, 84)

self.fc3 = nn.linear(84, 10)

def forward(self, x):

x = self.pool(f.relu(self.conv1(x)))

x = self.pool(f.relu(self.conv2(x)))

x = x.view(-1, 16*5*5)

x = f.relu(self.fc1(x))

x = f.relu(self.fc2(x))

x = self.fc3(x)

return x

net = net()

看到上面的**大家對比一下 keras 中的**就可以發現其中的差別了。其實就是乙個壓縮的操作。

那麼這裡為什麼使用了有引數 「-1」呢。當你不知道你那個位置的引數具體是多少時可以使用「-1」來代替。程式會根據後面的引數推斷出這個「-1」具體是什麼值。當然你不能存在歧義的。

PyTorch中view的用法

相當於numpy中resize 的功能,但是用法可能不太一樣。我的理解是 把原先tensor中的資料按照行優先的順序排成乙個一維的資料 這裡應該是因為要求位址是連續儲存的 然後按照引數組合成其他維度的tensor。比如說是不管你原先的資料是 1,2,3 4,5,6 還是 1,2,3,4,5,6 因為...

PyTorch中view的用法

相當於numpy中resize 的功能,但是用法可能不太一樣。我的理解是 把原先tensor中的資料按照行優先的順序排成乙個一維的資料 這裡應該是因為要求位址是連續儲存的 然後按照引數組合成其他維度的tensor。比如說是不管你原先的資料是 1,2,3 4,5,6 還是 1,2,3,4,5,6 因為...

Pytorch中view的用法

在pytorch中view函式的作用為重構張量的維度,相當於numpy中resize 的功能,但是用法可能不太一樣。如下例所示 import torch tt1 torch.tensor 0.3623,0.6115,0.7283,0.4699,2.3261,0.1599 result tt1.vie...