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 結果...