60分鐘入門PyTorch

2021-09-26 19:36:51 字數 3793 閱讀 4043

這是乙個基於python的科學計算軟體包,針對兩組受眾:

numpy的替代品,可以使用gpu的強大功能

深入學習研究平台,提供最大的靈活性和速度

入門張量

張量與numpy的ndarray類似,另外還有tensors也可用於gpu以加速計算。

from __future__ import print_function

import torch

注意

宣告了未初始化的矩陣,但在使用之前不包含明確的已知值。建立未初始化的矩陣時,當時分配的記憶體中的任何值都將顯示為初始值。

構造乙個未初始化的5x3矩陣:

x = torch.empty(5, 3)

print(x)

tensor([[0., 0., 0.],

[0., 0., 0.],

[0., 0., 0.],

[0., 0., 0.],

[0., 0., 0.]])

構造乙個隨機初始化的矩陣:

x = torch.rand(5, 3)

print(x)

tensor([[0.6259, 0.0797, 0.8297],

[0.6732, 0.7944, 0.2363],

[0.6775, 0.2497, 0.3846],

[0.8515, 0.5171, 0.6957],

[0.7759, 0.6000, 0.1323]])

x = torch.zeros(5, 3, dtype=torch.long)

print(x)

tensor([[0, 0, 0],

[0, 0, 0],

[0, 0, 0],

[0, 0, 0],

[0, 0, 0]])

x = torch.tensor([5.5, 3])

print(x)

tensor([5.5000, 3.0000])

或者根據現有的張量建立張量。除非使用者提供新值,否則這些方法將重用來輸入張量的屬性,例如dtype

x = x.new_ones(5, 3, dtype=torch.double)      # new_* methods take in sizes

print(x)

x = torch.randn_like(x, dtype=torch.float) # override dtype!

print(x) # result has the same size

tensor([[1., 1., 1.],

[1., 1., 1.],

[1., 1., 1.],

[1., 1., 1.],

[1., 1., 1.]], dtype=torch.float64) tensor([[ 0.5955, -0.2528, -0.2648],

[ 0.7689, 0.2396, -0.0121],

[ 1.3478, 0.0460, 0.0255],

[ 0.1266, -1.1526, -0.5546],

[-0.2001, -0.0542, -0.6439]])

得到它的大小:

print(x.size())
torch.size([5, 3])

torch.size 實際上是乙個元組,因此它支援所有元組操作。操作有多種語法。在下面的示例中,我們將檢視新增操作。

y = torch.rand(5, 3)

print(x + y)

tensor([[ 1.1550, 0.5950, -0.0519],

[ 1.3954, 0.9232, 0.8904],

[ 1.7020, 0.8187, 0.0265],

[ 0.3831, -0.6057, -0.2829],

[ 0.5647, 0.5976, 0.1128]])

增加

print(torch.add(x, y))
tensor([[ 1.1550,  0.5950, -0.0519],

[ 1.3954, 0.9232, 0.8904],

[ 1.7020, 0.8187, 0.0265],

[ 0.3831, -0.6057, -0.2829],

[ 0.5647, 0.5976, 0.1128]])

提供輸出張量作為引數

result = torch.empty(5, 3)

torch.add(x, y, out=result)

print(result)

tensor([[ 1.1550, 0.5950, -0.0519],

[ 1.3954, 0.9232, 0.8904],

[ 1.7020, 0.8187, 0.0265],

[ 0.3831, -0.6057, -0.2829],

[ 0.5647, 0.5976, 0.1128]])

y.add_(x)

print(y)

tensor([[ 1.1550, 0.5950, -0.0519],

[ 1.3954, 0.9232, 0.8904],

[ 1.7020, 0.8187, 0.0265],

[ 0.3831, -0.6057, -0.2829],

[ 0.5647, 0.5976, 0.1128]])

注意任何使原位張量變形的操作都是用_。後固定的。例如:x.copy_(y),x.t_(),將改變x。可以使用標準的numpy索引

print(x[:, 1])
tensor([-0.2528, 0.2396, 0.0460, -1.1526, -0.0542])

調整大小:如果要調整張量/重塑張量,可以使用torch.view:

x = torch.randn(4, 4)

y = x.view(16)

z = x.view(-1, 8) # the size -1 is inferred from other dimensions

print(x.size(), y.size(), z.size())

torch.size([4, 4]) torch.size([16]) torch.size([2, 8])

x = torch.randn(1)

print(x)

print(x.item())

tensor([-0.8748])

-0.8748161792755127

Speedle五分鐘入門

speedle是乙個非常強大的企業級許可權管理方案。不同於傳統企業級應用,speedle簡單易學。使用者可以在5分鐘之內編譯,部署,和簡單使用speedle。第一步 編譯 先安裝go編譯器,安裝檔案在 設定gopath環境變數 執行如下命令 spctl speedle ads speedle pms...

5分鐘入門golang module

golang團隊在版本1.13及以後全面支援module機制,用於結束混亂複雜的專案管理機制。同學們可以簡單的將module機制理解成pip apt get等包管理工具。乙個專案 倉庫 包括多個module 模組 乙個模組包括多個package 包 而乙個包含多個 原始檔。簡單的說,在乙個modul...

5分鐘入門Lindorm SearchIndex

簡介 searchindex是lindorm寬表的二級索引,主要用來幫助業務實現快速的檢索分析。本篇文章介紹如何通過簡單的sql介面操作searchindex。lindorm對外提供統一的標準sql入口,可以讓開發人員快速上手,輕鬆運維海量資料。searchindex是lindorm寬表的二級索引,...