欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pytorch之view及view_as使用詳解

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

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

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

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

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

很重要的一點

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

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

所以,當tensor之前調用了transpose, permute函數就會是tensor內存中變得不再連續(xù),就不能調用view函數。

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

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

reshape函數調用是不依賴于tensor在內存中是不是連續(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,]的張量,是個數組
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使用詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論