亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Pytorch之view及view_as使用詳解

 更新時間:2019年12月31日 09:56:41   作者:嘖嘖嘖biubiu  
今天小編就為大家分享一篇Pytorch之view及view_as使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

view()函數(shù)是在torch.Tensor.view()下的一個函數(shù),可以有tensor調(diào)用,也可以有variable調(diào)用。

其作用在于返回和原tensor數(shù)據(jù)個數(shù)相同,但size不同的tensor

【Numpy中的size是元素個數(shù),但是在Pytorch中size等價為Numpy中的shape】

view函數(shù)的-1參數(shù)的作用在于基于另一參數(shù),自動計算該維度的大小

很重要的一點

view函數(shù)只能由于contiguous的張量上,具體而言,就是在內(nèi)存中連續(xù)存儲的張量。

具體而言,可以參看 http://chabaoo.cn/article/177564.htm

所以,當(dāng)tensor之前調(diào)用了transpose, permute函數(shù)就會是tensor內(nèi)存中變得不再連續(xù),就不能調(diào)用view函數(shù)。

所以,應(yīng)該提前做tensor.contiguous()的操作

view函數(shù)與Pytorch0.4中新增的reshape的區(qū)別

reshape函數(shù)調(diào)用是不依賴于tensor在內(nèi)存中是不是連續(xù)的。

reshape ≈ tensor.contiguous().view

代碼

import numpy as np
import torch
from torch.autograd import Variable
 
x = torch.Tensor(2,2,2)
print(x)
 
y = x.view(1,8)
print(y)
 
z = x.view(-1,4) # the size -1 is inferred from other dimensions
print(z)
 
t = x.view(8)
print(t)

輸出

tensor([[[1.3712e-14, 6.4069e+02],
   [4.3066e+21, 1.1824e+22]],

  [[4.3066e+21, 6.3828e+28],
   [3.8016e-39, 0.0000e+00]]])

#x.view(1,8)生成的是[1,8]的張量
tensor([[1.3712e-14, 6.4069e+02, 4.3066e+21, 1.1824e+22, 4.3066e+21, 6.3828e+28,
   3.8016e-39, 0.0000e+00]])

#x.view(-1,4)其中-1是在4下的另一個維度的大小,也就是8/4=2,所以生成的是[2,4]的張量
tensor([[1.3712e-14, 6.4069e+02, 4.3066e+21, 1.1824e+22],
  [4.3066e+21, 6.3828e+28, 3.8016e-39, 0.0000e+00]])

x.view(8)生成的是[8,]的張量,是個數(shù)組
tensor([1.3712e-14, 6.4069e+02, 4.3066e+21, 1.1824e+22, 4.3066e+21, 6.3828e+28,
  3.8016e-39, 0.0000e+00])

view_as

返回被視作與給定的tensor相同大小的原tensor。 等效于:

self.view(tensor.size())

具體用法為:

代碼

a = torch.Tensor(2, 4)
b = a.view_as(torch.Tensor(4, 2))
print (b)

輸出

tensor([[1.3712e-14, 6.4069e+02],
  [4.3066e+21, 1.1824e+22],
  [4.3066e+21, 6.3828e+28],
  [3.8016e-39, 0.0000e+00]])

以上這篇Pytorch之view及view_as使用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論