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

Python深度學(xué)習(xí)線性代數(shù)示例詳解

 更新時(shí)間:2021年10月11日 09:47:51   作者:Supre_yuan  
這篇文章主要為大家講解了Python深度學(xué)習(xí)中線性代數(shù)的示例詳解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

標(biāo)量

標(biāo)量由普通小寫(xiě)字母表示(例如,x、y和z)。我們用 R \mathbb{R} R表示所有(連續(xù))實(shí)數(shù)標(biāo)量的空間。

標(biāo)量由只有一個(gè)元素的張量表示。下面代碼,我們實(shí)例化了兩個(gè)標(biāo)量,并使用它們執(zhí)行一些熟悉的算數(shù)運(yùn)算,即加法、乘法、除法和指數(shù)。

import torch
x = torch.tensor([3.0])
y = torch.tensor([2.0])
x + y, x * y, x / y, x ** y
tensor([5]), tensor([6]), tensor([1.5]), tensor([9])

向量

向量是標(biāo)量值組成的列表,我們將這些標(biāo)量值稱為向量的元素或分量。
在數(shù)學(xué)表示法中,我們通常將向量記為粗體、小寫(xiě)的符號(hào)(例如, x \mathbf{x} x、 y \mathbf{y} y和 z \mathbf{z} z)

我們通過(guò)一維張量處理向量。一般來(lái)說(shuō),張量可以具有任意長(zhǎng)度,最大長(zhǎng)度取決于機(jī)器的內(nèi)存限制。

x = torch.arange(4)
tensor([0, 1, 2, 3])

大量文獻(xiàn)認(rèn)為列向量是向量的默認(rèn)方向。在數(shù)學(xué)中,向量 x \mathbf{x} x可以寫(xiě)為:

在這里插入圖片描述

我們可以通過(guò)張量的索引來(lái)訪問(wèn)任一元素。

x[3]
tensor(3)

長(zhǎng)度、維度和形狀

在數(shù)學(xué)表示法中,如果我們想說(shuō)一個(gè)向量 x \mathbf{x} x由 n n n個(gè)實(shí)值標(biāo)量組成,我們可以將其表示為 x ∈ R n \mathbf{x} \in \mathbb{R}^{n} x∈Rn。向量的長(zhǎng)度通常稱為向量的維度。

與普通的Python數(shù)組一樣,我們可以通過(guò)調(diào)用Python的內(nèi)置len()函數(shù)來(lái)訪問(wèn)張量的長(zhǎng)度。

len(x)
4

當(dāng)用張量表示一個(gè)向量(只有一個(gè)軸)時(shí),我們也可以通過(guò).shape屬性訪問(wèn)向量的長(zhǎng)度。形狀(shape)是一個(gè)元組,列出了張量沿每個(gè)軸的長(zhǎng)度(維數(shù))。對(duì)于只有一個(gè)軸的張量,形狀只有一個(gè)元素。

x.shape
torch.Size([4])

注意,維度(dimension)這個(gè)詞在不同上下文時(shí)往往會(huì)有不同的含義,這經(jīng)常會(huì)使人感到困惑。為了清楚起見(jiàn),我們?cè)诖嗣鞔_一下。向量或軸的維度被用來(lái)表示向量或軸的長(zhǎng)度,即向量或軸的元素?cái)?shù)量。然而,張量的維度用來(lái)表示張量具有的軸數(shù)。在這個(gè)意義上,張量的某個(gè)軸的維數(shù)就是這個(gè)軸的長(zhǎng)度。

矩陣

在這里插入圖片描述

當(dāng)矩陣具有相同數(shù)量的行和列時(shí),其形狀將變?yōu)檎叫?;因此,它被稱為方矩陣。

當(dāng)調(diào)用函數(shù)來(lái)實(shí)例化張量時(shí),我們可以通過(guò)指定兩個(gè)分量m和n來(lái)創(chuàng)建一個(gè)形狀為 m×n的矩陣。

A = torch.arange(20).reshape(5, 4)
tensor([[0, 1, 2, 3],
        [4, 5, 6, 7],
        [8, 9, 10, 11],
        [12, 13, 14, 15],
        [16, 17, 18, 19]])

在這里插入圖片描述

A.T
tensor([[0, 4, 8, 12, 16],
        [1, 5, 9, 13, 17],
        [2, 6, 10, 14, 18],
        [3, 7, 11, 15, 19]])

矩陣是有用的數(shù)據(jù)結(jié)構(gòu):它們?cè)试S我們組織具有不同變化模式的數(shù)據(jù)。例如,我們矩陣中的行可能對(duì)應(yīng)于不同的房屋(數(shù)據(jù)樣本),而列可能對(duì)應(yīng)于不同的屬性。因此,盡管單個(gè)向量的默認(rèn)方向是列向量,但在表示表格數(shù)據(jù)集的矩陣中,將每個(gè)數(shù)據(jù)樣本作為矩陣中的行向量更為常見(jiàn)。

張量

張量為我們提供了描述具有任意數(shù)量軸的 n n n維數(shù)組的通用方法。

當(dāng)我們開(kāi)始處理圖像時(shí),張量將變得更加重要,圖像以 n n n維數(shù)組形式出現(xiàn),其中3個(gè)軸對(duì)應(yīng)于高度、寬度以及一個(gè)通道(channel)軸,用于堆疊顏色通道(紅色、綠色和藍(lán)色)。現(xiàn)在,我們將跳過(guò)高階張量,集中在基礎(chǔ)知識(shí)上。

X = torch.arange(24).reshape(2, 3, 4)
tensor([[[0, 1, 2, 3],
         [4, 5, 6, 7],
         [8, 9, 10, 11]],
        [[12, 13, 14, 15],
         [16, 17, 18, 19],
         [20, 21, 22, 23]]])

張量算法的基本性質(zhì)

任何按元素的一元運(yùn)算都不會(huì)改變其操作數(shù)的形狀。同樣,給定具有相同形狀的任意兩個(gè)張量,任何按元素二元運(yùn)算的結(jié)果都將是相同形狀的張量。例如,將兩個(gè)相同形狀的矩陣相加會(huì)在這兩個(gè)矩陣上執(zhí)行元素的加法。

A = torch.arange(20, dtype=torch.float32).reshape(5,4)
B = A.clone
A, A + B
tensor([[0, 1, 2, 3],
        [4, 5, 6, 7],
        [8, 9, 10, 11],
        [12, 13, 14, 15],
        [16, 17, 18, 19]]),
tensor([[0, 2, 4, 6],
        [8, 10, 12, 14],
        [16, 18, 20, 22],
        [24, 26, 28, 30],
        [32, 34, 36, 38]])

具體而言,兩個(gè)矩陣按元素乘法稱為哈達(dá)瑪積。

A * B
tensor([[0, 1, 4, 9],
        [16, 25, 36, 49],
        [64, 81, 100, 121],
        [144, 169, 196, 225],
        [256, 289, 324, 361]])

將張量乘以或加上一個(gè)標(biāo)量不會(huì)改變張量的形狀,其中張量的每個(gè)元素都將與標(biāo)量相加或相乘。

降維

我們可以對(duì)任意張量進(jìn)行一個(gè)有用的操作是計(jì)算其元素的和。在代碼中,我們可以調(diào)用計(jì)算求和的函數(shù):

x = torch.arange(4, dtype = torch.float32)
x.sum()
tensor(6)

默認(rèn)的情況下,調(diào)用求和函數(shù)會(huì)沿所有的軸降低張量的維度,使它變?yōu)橐粋€(gè)標(biāo)量。我們還可以指定張量沿哪一個(gè)軸來(lái)通過(guò)求和降低維度。以矩陣為例,為了通過(guò)求和所有行的元素來(lái)降維(軸0),我們可以在調(diào)用函數(shù)時(shí)指定axis = 0。由于輸入矩陣沿著0軸降維以生成輸出張量,因此輸入的軸0的維數(shù)在輸出形狀中丟失。

A.shape
torch.Size([5, 4])
A_sum_axis0 = A.sum(axis = 0)
A_sum_axis0, A_sum_axis0.shape
tensor([40, 45, 50, 55]), torch.Size([4])

指定axis = 1將通過(guò)匯總所有列的元素降維(軸1)。因此,輸入的軸1的維數(shù)在輸出形狀中消失。

A_sum_axis1 = A.sum(axis = 1)
A_sum_axis1, A_sum_axis1.shape
tensor([6, 22, 38, 54, 70]), torch.Size([5])

沿著行和列對(duì)矩陣求和,等價(jià)于對(duì)矩陣的所有元素進(jìn)行求和。

A.sum(axis=[0, 1])
tensor(190)

一個(gè)與求和相關(guān)的量是平均值。在代碼中,我們可以調(diào)用函數(shù)來(lái)計(jì)算任意形狀張量的平均值。

A.mean()

同樣,計(jì)算平均值的函數(shù)也可以沿指定軸降低張量的維度。

A.mean(axis = 0)

點(diǎn)積

最基本的操作是點(diǎn)積。
給定兩個(gè)向量,點(diǎn)積是它們相同位置的按元素乘積的和。

y = torch.ones(4, dtype = torch.float32)
x, y, torch.dot(x, y)
tensor([0, 1, 2, 3]), tensor([1, 1, 1, 1]), tensor(6)

矩陣-矩陣乘法

在下面的代碼中,我們?cè)贏和B上執(zhí)行矩陣乘法。這里的A是一個(gè)5行4列的矩陣,B是一個(gè)4行3列的矩陣。相乘后,我們得到一個(gè)5行3列的矩陣。

B = torch.ones(4, 3)
torch.mm(A, B)

范數(shù)

線性代數(shù)中最有用的一些運(yùn)算符是范數(shù)。非正式地說(shuō),一個(gè)向量的范數(shù)告訴我們一個(gè)向量有多大。這里考慮的大?。╯ize)概念不涉及維度,而是分量的大小。

在線性代數(shù)中,向量范數(shù)是將向量映射到標(biāo)量的函數(shù) f f f。向量范數(shù)要滿足一些屬性。給定任意向量 x \mathbf{x} x,第一個(gè)性質(zhì)來(lái)說(shuō),如果我們按常數(shù)因子 α \alpha α縮放向量的所有元素,其范數(shù)也會(huì)按相同常數(shù)因子的絕對(duì)值縮放:

在這里插入圖片描述

第二個(gè)性質(zhì)是我們熟悉的三角不等式:

在這里插入圖片描述

第三個(gè)性質(zhì)簡(jiǎn)單地說(shuō)范數(shù)必須是非負(fù)的。

在這里插入圖片描述

最后一個(gè)性質(zhì)要求范數(shù)最小為0,當(dāng)且僅當(dāng)向量全由0組成。

在這里插入圖片描述

在這里插入圖片描述

u = torch.tensor([3, 4])
torch.norm(u)

在這里插入圖片描述

u = torch.tensor([3, 4])
torch.abs(u).sum()
tensor(7)

在這里插入圖片描述

torch.norm(torch.ones((4, 9)))

范數(shù)和目標(biāo):

在深度學(xué)習(xí)中,我們經(jīng)常試圖解決優(yōu)化問(wèn)題:最大化分配給觀測(cè)數(shù)據(jù)的概率;最小化預(yù)測(cè)和真實(shí)觀測(cè)之間的距離。用向量表示物品(如單詞、產(chǎn)品或新聞文章),以便最小化相似項(xiàng)目之間的距離,最大化不同項(xiàng)目之間的距離。通常,目標(biāo),或許是深度學(xué)習(xí)算法最終要的組成部分(除了數(shù)據(jù)),被表達(dá)為范數(shù)。

以上就是Python深度學(xué)習(xí)線性代數(shù)示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Python線性代數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

  • python進(jìn)階_淺談面向?qū)ο筮M(jìn)階

    python進(jìn)階_淺談面向?qū)ο筮M(jìn)階

    下面小編就為大家?guī)?lái)一篇python進(jìn)階_淺談面向?qū)ο筮M(jìn)階。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • python實(shí)例方法的使用注意及代碼實(shí)例

    python實(shí)例方法的使用注意及代碼實(shí)例

    在本篇文章里小編給大家總結(jié)的是關(guān)于python實(shí)例方法的使用注意及代碼實(shí)例內(nèi)容,對(duì)此有興趣的朋友們可以參考下。
    2022-11-11
  • Python函數(shù)式編程指南(三):迭代器詳解

    Python函數(shù)式編程指南(三):迭代器詳解

    這篇文章主要介紹了Python函數(shù)式編程指南(三):迭代器詳解,本文講解了迭代器(Iterator)概述、使用迭代器、生成器表達(dá)式(Generator expression)和列表解析(List Comprehension)等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • Python入門(mén)之三角函數(shù)全解【收藏】

    Python入門(mén)之三角函數(shù)全解【收藏】

    這篇文章主要介紹了Python入門(mén)之三角函數(shù)全解【收藏】,還是比較全面的,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 淺談python爬蟲(chóng)使用Selenium模擬瀏覽器行為

    淺談python爬蟲(chóng)使用Selenium模擬瀏覽器行為

    這篇文章主要介紹了淺談python爬蟲(chóng)使用Selenium模擬瀏覽器行為,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • 淺談Python 責(zé)任鏈模式

    淺談Python 責(zé)任鏈模式

    本文主要介紹了淺談Python 責(zé)任鏈模式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • 用python找出那些被“標(biāo)記”的照片

    用python找出那些被“標(biāo)記”的照片

    這篇文章主要介紹了用python找出那些被“標(biāo)記”的照片的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • Django 創(chuàng)建新App及其常用命令的實(shí)現(xiàn)方法

    Django 創(chuàng)建新App及其常用命令的實(shí)現(xiàn)方法

    這篇文章主要介紹了Django 創(chuàng)建新App及其常用命令的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 超詳細(xì)注釋之OpenCV更改像素與修改圖像通道

    超詳細(xì)注釋之OpenCV更改像素與修改圖像通道

    這篇文章主要介紹了OpenCV更改像素與修改圖像通道,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • 最新評(píng)論