Pytorch學習 1 pytorch簡介

2021-10-14 13:23:11 字數 2468 閱讀 7753

pytorch簡介

1 pytorch簡介

1.1 pytorch的大概

pytorch不是簡單的封裝 lua torch 提供python介面,而是對當下tensor之上的模組進行重構,並增加了最先進的自動求導系統,成為當下最流行的動態圖框架。

pytorch是乙個基於torch的python開源機器學習庫,用於自然語言處理等應用程式。它主要由facebookd的人工智慧小組開發,不僅能夠實現強大的gpu加速,同時還支援動態神經網路,這一點是現在很多主流框架如tensorflow都不支援的。 pytorch提供了兩個高階功能:

具有強大的gpu加速的張量計算(如numpy)

包含自動求導系統的深度神經網路 除了facebook之外,twitter、gmu和salesforce等機構都採用了pytorch

1.2 常見的深度學習框架介紹

1.2.1 theano

乙個python庫,用來定義、優化和計算數學表示式,特別是numpy.ndarray;z在解決包含大量資料問題時,使用theano程式設計可以比c快很多,並且通過gpu加速能夠比cpu快幾個數量級。

但是:theano不開發了,所以了解是什麼即可。(不用過多的研究)

1.2.2 tensorflow

tensorflow主要用於機器學習與深度學習神經網路中,是乙個非常基礎的系統。其作為theano的後繼者,有著相似的設計理念,都是基於計算圖實現自動微分系統。tensorflow使用資料流圖進行數值計算,圖中的節點代表數**算,而圖中的邊則代表這些節點之間傳遞的多維向量組(tensor–張量),但也存在一些如下問題:

過於複雜的系統設計

頻繁變動的介面

介面設計過於晦澀難懂

文件混亂脫節

整體而言不完美但相當流行的深度學習框架,社群強大並且適合生產環境

1.2.3 keras

keras是乙個高層神經網路api,由於純python編寫而成並使用tensorflow,theano及cntk作為後端。keras為支援快速實驗而生,能夠把想法迅速轉換為結果。

入門最為簡單,但是不夠靈活並且使用受限

1.2.4 caffe/caffe2

caffe是乙個清晰、高效的深度學習框架,核心語言是c++ ,支援命令列、python和matlab介面,既可以到cpu上執行,也可以在gpu上執行。caffe有點是簡潔快速,但是本身設計缺少靈活性。

文件不夠完善但是效能優異,幾乎全平台支援(caffe2),適合生產環境。

1.2.5 mxnet

mxnet以其超強分布式支援,明顯的記憶體、視訊記憶體優化為人所稱道。同樣的模型,mxnet往往占用更小的記憶體與視訊記憶體,在分布式環境下,mxnet展現出了明顯優於其他框架的擴充套件效能。

文件較為混亂,但是分布式效能強大,語言支援最多,適合aws雲平台使用

1.2.6 cntk

cntk將神經網路描述成乙個計算圖的結構,葉子節點代表輸入或者網路引數,其他節點代表計算步驟

相關社群不夠活躍,但是效能突出,擅長語音方面的相關研究。

1.2.7 其他框架

總體來說有一定的使用者及影響力,但是大多流行度和關注度不夠,侷限於一定的領域

1.3 屬於動態圖的未來

靜態計算圖:先定義再計算(define and run), 一次定於多次執行。

動態計算圖:在運過程中被定義,在執行時構建(define by run),可以多次構建多次執行。

import torch as t

from torch.autograd import variable

n, d, h = 3, 4, 5

x = variable(t.randn(n, d))

w1 = variable(t.randn(d, h))

w2 = variable(t.randn(d, h))

z = 10

if z > 0:

y = x.mm(w1)

else:

y = x.mm(w2)

import tensorflow as tf

import numpy as np

n, d, h = 3, 4, 5

x = tf.placeholder(tf.float32, shape=(n, d))

z = tf.placeholder(tf.float32, shape=none)

w1 = tf.placeholder(tf.float32, shape=(d, h))

w2 = tf.placeholder(tf.float32, shape=(d, h))

def f1():

return tf.matmul(x,w1)

def f2():

return tf.matmul(x, w2)

y = tf.cond(tf.less(z, 0), f1, f2)

with tf.session() as sess:

values =

y_val = sees.run(y, feed_dict=values)

什麼是PyTorch,為何要使用PyTorch

pytorch 是torch7 團隊開發的,從它的名字就可以看出,其與torch 的不同之處在於pytorch 使用了python 作為開發語言。所謂 python first 同樣說明它是乙個以python 優先的深度學習框架,不僅能夠實現強大的gpu 加速,同時還支援動態神經網路,這是現在很多主...

pytorch基礎學習 1

剛剛接觸了tensorflow,現在對pytorch也有很大的興趣,說到底,這些機器學習庫都是工具,技多不壓身,2016年到現在也不到三年的庫,發展這麼快必然有它的道理,廢話不多,開始學習吧。包torch包含了多維張量的資料結構以及基於其上的多種數學操作。另外,它也提供了多種工具,其中一些可以有效的...

pytorch基礎學習1

1.從numpy匯入 import torch import numpy as np a np.array 2,2.3 b torch.from numpy a print a print b a np.ones 2,3 b torch.from numpy a print a print b 結果...