深度學習中的變數類型——torch.Tensor和torch.Variable

一、torch.Tensor

torch.Tensor是PyTorch中表示張量的基礎數據類型,也是PyTorch中最常用的數據類型之一。它是一個多維數組,而且可以在CPU或GPU內存中存儲數據。

定義一個Tensor可以通過torch.Tensor函數或者torch.tensor函數,參數可以是list、tuple、ndarray或者標量。

import torch
a = torch.Tensor([1,2,3])
b = torch.tensor([[1, 2], [3, 4]])
c = torch.tensor(3)

Tensor的屬性包括shape、dtype、device、layout等,可以通過這些屬性對tensor進行操作。

print(a.shape)   #(3,)
print(b.dtype)   #torch.int64
print(c.device)  #cpu
a = a.to('cuda') #將a放到GPU上

二、torch.autograd.Variable與torch.Tensor的關係

在PyTorch 0.4版本之前,Variable是PyTorch中的一個重要組成部分,主要是為了方便定義需要求導的計算圖,通過Variable記錄Tensor的歷史版本,從而支持反向傳播計算梯度。

而從PyTorch 0.4版本開始,Variable被整合到了Tensor中,新版本中,用戶可以使用requires_grad參數在創建Tensor時決定是否需要求導。

a = torch.tensor([1,2,3], requires_grad=True)
b = torch.tensor([4,5,6], requires_grad=True)

c = a + b
d = c.mean()

d.backward()
print(a.grad)
print(b.grad)

三、torch.nn.Parameter

torch.nn.Parameter是一種特殊的Tensor,它被設置為一個模型的可學習參數。與普通的Tensor不同,在計算圖的生成中它是存在於nn.Module中的,並且默認有requires_grad=True屬性。

創建一個nn.Parameter時,需要指定形狀。通常在模型定義中調用這個函數創建需要學習的參數,例如權重和偏差。

import torch.nn as nn

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.weight = nn.Parameter(torch.randn(3, 5))
        self.bias = nn.Parameter(torch.zeros(3))

    def forward(self, x):
        return torch.mm(x, self.weight) + self.bias

net = Net()
print(net)

四、總結

本文主要介紹了在PyTorch中三種重要的變數類型:torch.Tensor、torch.autograd.Variable和torch.nn.Parameter。Tensor是PyTorch中的基礎數值類型,可以在CPU或GPU上存儲數據;Variable是Tensor的歷史版本,在0.4版本之後被整合到Tensor中,需要使用requires_grad屬性來決定是否需要求導;Parameter是一種特殊的Tensor,是nn.Module中的可學習參數,通常在模型定義中被使用。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/312814.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-06 15:17
下一篇 2025-01-06 15:17

相關推薦

  • int類型變數的細節與注意事項

    本文將從 int 類型變數的定義、聲明、初始化、範圍、運算和類型轉換等方面,對 int 類型變數進行詳細闡述和講解,幫助讀者更好地掌握和應用 int 變數。 一、定義與聲明 int…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python input參數變數用法介紹

    本文將從多個方面對Python input括弧里參數變數進行闡述與詳解,並提供相應的代碼示例。 一、基本介紹 Python input()函數用於獲取用戶輸入。當程序運行到inpu…

    編程 2025-04-29
  • Python基本數字類型

    本文將介紹Python中基本數字類型,包括整型、布爾型、浮點型、複數型,並提供相應的代碼示例以便讀者更好的理解。 一、整型 整型即整數類型,Python中的整型沒有大小限制,所以可…

    編程 2025-04-29
  • Python匿名變數的使用方法

    Python中的匿名變數是指使用「_」來代替變數名的特殊變數。這篇文章將從多個方面介紹匿名變數的使用方法。 一、作為佔位符 匿名變數通常用作佔位符,用於代替一個不需要使用的變數。例…

    編程 2025-04-29
  • Python中的Bool類型判斷

    本篇文章旨在講解Python中的Bool類型判斷。在Python中,Bool類型是經常使用的一種類型,因此掌握其用法非常重要。 一、True和False 在Python中,True…

    編程 2025-04-29
  • Python變數在內存中的存儲

    該文章將從多個方面對Python變數在內存中的存儲進行詳細闡述,包括變數的聲明和賦值、變數的引用和指向、內存地址的變化、內存管理機制等。 一、聲明和賦值 在Python中,變數聲明…

    編程 2025-04-29
  • 深度查詢宴會的文化起源

    深度查詢宴會,是指通過對一種文化或主題的深度挖掘和探究,為參與者提供一次全方位的、深度體驗式的文化品嘗和交流活動。本文將從多個方面探討深度查詢宴會的文化起源。 一、宴會文化的起源 …

    編程 2025-04-29
  • Python函數類型有哪些

    本文將從以下幾個方面詳細闡述Python函數類型。 一、內置函數 Python的內置函數是指在Python編程語言中提供的可以直接使用的函數,不需要通過導入模塊等方式引入。 部分常…

    編程 2025-04-29
  • Python中的整數類型int類總覽

    本文將從多個方面,對Python中的整數類型int類進行全面介紹和闡述。 一、數據類型及基本操作 在Python中,整數類型的數據類型為int。在Python3.x中,整數類型的范…

    編程 2025-04-28

發表回復

登錄後才能評論