Ⅰ pytorch是什麼
PyTorch是一個開源的python機器學習庫,基於Torch,用於自然語言處理等應用程序。
由Facebook人工智慧研究院(FAIR)基於Torch推出了PyTorch。它是一個基於Python的可續計算包,提供兩個高級功能:具有強大的GPU加速的張量計算(如NumPy)。包含自動求導系統的深度神經網路。
PyTorch的發展:
PyTorch的前身是Torch,其底層和Torch框架一樣,但是使用Python重新寫了很多內容,不僅更加靈活,支持動態圖,而且提供了Python介面。它是由Torch7團隊開發,是一個以Python優先的深度學習框架,不僅能夠實現強大的GPU加速,同時還支持動態神經網路。
PyTorch既可以看作加入了GPU支持的numpy,同時也可以看成一個擁有自動求導功能的強大的深度神經網路。除了Facebook外,它已經被Twitter、CMU和Salesforce等機構採用。
Ⅱ 有必要TensorFlow和pytorch都配重嗎
有。
TensorFlow是一個基於數據流編程符號數學系統,被廣泛應用於各類機器學習演算法的編程實現,其前身是谷歌的神經網路演算法庫DistBelief。
PyTorch的前身是Torch,其底層和Torch框架一樣,但是使用Python重新寫了很多內容,不僅更加靈活,支持動態圖,而且提供了Python介面。
它是由Torch7團隊開發,是一個以Python優先的深度學習框架,不僅能夠實現強大的GPU加速,同時還支持動態神經網路,這是很多主流深度學習框架比如Tensorflow等都不支持的。
Ⅲ MATLAB中的temp對於三維數組是什麼功能
表示該向量的行擴展
把temp綴在T後
T+temp表示向量相加,提示表示格式不符或尺度不符.
VB中的字元串相加和Matlab的字元串相加是不同的
VB中的「+」有時為5+6=11的演算法,有時為 "a" + "b"="ab"的效果
望採納!
Ⅳ torch支持python嗎
PyTorch 是 Torch7 團隊開發的,從它的名字就可以看出,其與 Torch 的不同之處在於 PyTorch 使用了 Python 作為開發語言。
所謂「Python first」,同樣說明它是一個以Python 優先的深度學習框架,不僅能夠實現強大的GPU 加速,同時還支持動態神經網路,這是現在很多主流框架比如Tensorflow 等都不支持的。
PyTorch 既可以看做加入了GPU 支持的numpy,同時也可以看成一個擁有自動求導功能的強大的深度神經網路,除了Facebook 之外,它還已經被Twitter、CMU 和Salesforce 等機構採用。
相關推薦:《Python教程》
為何要使用PyTorch
面對如此多的深度學習框架,我們為何要選擇PyTorch 呢?Tensorflow 不是深度學習框架默認的老大嗎,為什麼不直接選擇Tensorflow 而是要選擇PyTorch 呢?下面分4個方面來介紹為何要使用PyTorch。
(1)掌握一個框架並不能一勞永逸,現在深度學習並沒有誰擁有絕對的壟斷地位,就算是Google 也沒有,所以只學習Tensorflow 並不夠。同時現在的研究者使用各個框架的都有,如果你要去看他們實現的代碼,至少也需要了解他們使用的框架,所以多學一個框架,以備不時之需。
(2)Tensorflow 與Caffe 都是命令式的編程語言,而且是靜態的,首先必須構建一個神經網路,然後一次又一次使用同樣的結構,如果想要改變網路的結構,就必須從頭開始。但是對於PyTorch,通過一種反向自動求導的技術,可以讓你零延遲地任意改變神經網路的行為,盡管這項技術不是PyTorch 獨有,但目前為止它實現是最快的,能夠為你任何瘋狂想法的實現獲得最高的速度和最佳的靈活性,這也是PyTorch 對比Tensorflow 最大的優勢。
(3)PyTorch 的設計思路是線性、直觀且易於使用的,當你執行一行代碼時,它會忠實地執行,並沒有非同步的世界觀,所以當你的代碼出現Bug 的時候,可以通過這些信息輕鬆快捷地找到出錯的代碼,不會讓你在Debug 的時候因為錯誤的指向或者非同步和不透明的引擎浪費太多的時間。
(4)PyTorch 的代碼相對於Tensorflow 而言,更加簡潔直觀,同時對於Tensorflow高度工業化的很難看懂的底層代碼,PyTorch 的源代碼就要友好得多,更容易看懂。深入API,理解PyTorch 底層肯定是一件令人高興的事。一個底層架構能夠看懂的框架,你對其的理解會更深。
最後,我們簡要總結一下PyTorch 的特點:
·支持GPU;
·動態神經網路;
·Python 優先;
·命令式體驗;
·輕松擴展。
擁有著如此多優點的.PyTorch 也有著它的缺點,因為這款框架比較新,所以使用的人也就比較少,這也就使得它的社區沒有那麼強大,但是PyTorch 提供了一個官方的論壇,大多數碰到的問題都可以去裡面搜索,裡面的答案一般都是由作者或者其他PyTorch 使用者提供的,論壇的更新也特別頻繁,同時也可以去Github 上面提Issue,一般很快就會得到開發者的回應,也算是一定程度上解決了社區的問題。
Ⅳ 病毒,木馬,蠕蟲的區別
1、本質不同
病毒(包含蠕蟲)是自我復制、傳播、破壞電腦文件,對電腦造成數據上不可逆轉的損壞。而木馬是偽裝成正常應用騙取用戶信任而入侵,潛伏在電腦中盜取用戶資料與信息。
2、特徵不同
病毒的特徵:很強的感染性;一定隱蔽性;一定的潛伏性;特定的觸發性;不可預見性;很大的破壞性。
蠕蟲的特徵:它的入侵對象是整個互聯網上的電腦;不採用將自身復制在租住程序的方式傳播;通過互聯網傳播,極強的傳染性、破壞性。
木馬的特徵:主要包括隱蔽性、自動運行性、欺騙性、自動恢復、自動打開埠。
木馬的傳播方式
木馬病毒的傳播方式比較多,主要有:
(1)利用下載進行傳播,在下載的過程中進入程序,當下載完畢打開文件就將病毒植入到電腦中;
(2)利用系統漏洞進行傳播,當計算機存在漏洞,就成為木馬病毒攻擊的對象;
(3)利用郵件進行傳播,很多陌生郵件裡面就摻雜了病毒種子,一旦郵件被打開,病毒就被激活;
(4)利用遠程連接進行傳播;
(5)利用網頁進行傳播,在瀏覽網頁時會經常出現很多跳出來的頁面,這種頁面就是病毒駐扎的地方;
(6)利用蠕蟲病毒進行傳播等。
Ⅵ pytorch用什麼顯卡
1. 利用CUDA_VISIBLE_DEVICES設置可用顯卡
在CUDA中設定可用顯卡,一般有2種方式:
(1) 在代碼中直接指定
import os
os.environ['CUDA_VISIBLE_DEVICES'] = gpu_ids
(2) 在命令行中執行代碼時指定
CUDA_VISIBLE_DEVICES=gpu_ids python3 train.py
如果使用sh腳本文件運行代碼,則有3種方式可以設置
(3) 在命令行中執行腳本文件時指定:
CUDA_VISIBLE_DEVICES=gpu_ids sh run.sh
(4) 在sh腳本中指定:
source bashrc
export CUDA_VISIBLE_DEVICES=gpu_ids && python3 train.py
(5) 在sh腳本中指定
source bashrc
CUDA_VISIBLE_DEVICES=gpu_ids python3 train.py
如果同時使用多個設定可用顯卡的指令,比如
source bashrc
export CUDA_VISIBLE_DEVICES=gpu_id1 && CUDA_VISIBLE_DEVICES=gpu_id2 python3 train.py
那麼高優先順序的指令會覆蓋第優先順序的指令使其失效。優先順序順序為:不使用sh腳本 (1)>(2); 使用sh腳本(1)>(5)>(4)>(3)
個人感覺在煉丹時建議大家從(2)(3)(4)(5)中選擇一個指定可用顯卡,不要重復指定以防造成代碼的混亂。方法(1)雖然優先順序最高,但是需要修改源代碼,所以不建議使用。
2 .cuda()方法和torch.cuda.set_device()
我們還可以使用.cuda()[包括model.cuda()/loss.cuda()/tensor.cuda()]方法和torch.cuda.set_device()來把模型和數據載入到對應的gpu上。
(1) .cuda()
以model.cuda()為例,載入方法為:
model.cuda(gpu_id) # gpu_id為int類型變數,只能指定一張顯卡
model.cuda('cuda:'+str(gpu_ids)) #輸入參數為str類型,可指定多張顯卡
model.cuda('cuda:1,2') #指定多張顯卡的一個示例
(2) torch.cuda.set_device()
使用torch.cuda.set_device()可以更方便地將模型和數據載入到對應GPU上, 直接定義模型之前加入一行代碼即可
torch.cuda.set_device(gpu_id) #單卡
torch.cuda.set_device('cuda:'+str(gpu_ids)) #可指定多卡
但是這種寫法的優先順序低,如果model.cuda()中指定了參數,那麼torch.cuda.set_device()會失效,而且pytorch的官方文檔中明確說明,不建議用戶使用該方法。
第1節和第2節所說的方法同時使用是並不會沖突,而是會疊加。比如在運行代碼時使用
CUDA_VISIBLE_DEVICES=2,3,4,5 python3 train.py
而在代碼內部又指定
model.cuda(1)
loss.cuda(1)
tensor.cuda(1)
那麼代碼會在GPU3上運行。原理是CUDA_VISIBLE_DEVICES使得只有GPU2,3,4,5可見,那麼這4張顯卡,程序就會把它們看成GPU0,1,2,3,.cuda(1)把模型/loss/數據都載入到了程序所以為的GPU1上,則實際使用的顯卡是GPU3。
如果利用.cuda()或torch.cuda.set_device()把模型載入到多個顯卡上,而實際上只使用一張顯卡運行程序的話,那麼程序會把模型載入到第一個顯卡上,比如如果在代碼中指定了
model.cuda('cuda:2,1')
在運行代碼時使用
CUDA_VISIBLE_DEVICES=2,3,4,5 python3 train.py
這一指令,那麼程序最終會在GPU4上運行。
3.多卡數據並行torch.nn.DataParallel
多卡數據並行一般使用
torch.nn.DataParallel(model,device_ids)
其中model是需要運行的模型,device_ids指定部署模型的顯卡,數據類型是list
device_ids中的第一個GPU(即device_ids[0])和model.cuda()或torch.cuda.set_device()中的第一個GPU序號應保持一致,否則會報錯。此外如果兩者的第一個GPU序號都不是0,比如設置為:
model=torch.nn.DataParallel(model,device_ids=[2,3])
model.cuda(2)
那麼程序可以在GPU2和GPU3上正常運行,但是還會佔用GPU0的一部分顯存(大約500M左右),這是由於pytorch本身的bug導致的(截止1.4.0,沒有修復這個bug)。
device_ids的默認值是使用可見的GPU,不設置model.cuda()或torch.cuda.set_device()等效於設置了model.cuda(0)
4. 多卡多線程並行torch.nn.parallel.DistributedDataParallel
(這個我是真的沒有搞懂,,,,)
參考了這篇文章和這個代碼,關於GPU的指定,多卡多線程中有2個地方需要設置
torch.cuda.set_device(args.local_rank)
torch.nn.parallel.DistributedDataParallel(model, device_ids=[args.local_rank])
模型/loss/tensor設置為.cuda()或.cuda(args.local_rank)均可,不影響正常運行。
5. 推薦設置方式:
(1) 單卡
使用CUDA_VISIBLE_DEVICES指定GPU,不要使用torch.cuda.set_device(),不要給.cuda()賦值。
(2) 多卡數據並行
直接指定CUDA_VISIBLE_DEVICES,通過調整可見顯卡的順序指定載入模型對應的GPU,不要使用torch.cuda.set_device(),不要給.cuda()賦值,不要給torch.nn.DataParallel中的device_ids賦值。比如想在GPU1,2,3中運行,其中GPU2是存放模型的顯卡,那麼直接設置
CUDA_VISIBLE_DEVICES=2,1,3
(3) 多卡多線程
Ⅶ ubuntu下怎麼安裝torch
Torch簡介
Torch是一個廣泛支持機器學習演算法的科學計算框架,由於採用簡單而快速的腳本語言LuaJIT和一個底層的C/CUDA實現,Torch易於使用且高效。
Torch安裝
首先,值得注意的是,最新版的Torch支持Ubuntu,Fedora20,Fedora22,Centos7。但不支持Fedora21,Centos6。
參考官網安裝流程安裝,如下所示,
# in a terminal, run the commands
git clone https://github.com/torch/distro.git ~/torch --recursive
cd ~/torch; bash install-deps;
./install.sh12341234
在執行bash install-deps安裝依賴時並未出錯,但執行./install.sh時會出一些錯誤,見下面。
Torch安裝問題匯總
錯誤1
錯誤類似於:
nvcc error : '***' died e to signal 2
解決方案:sudo ./install.sh
錯誤2
Error: Build error: Failed building.
Updating manifest for /root/torch/install/lib/luarocks/rocks
fftw3 scm-1 is now built and installed in /root/torch/install/ (license: BSD)123123
錯誤3
Error: Failed installing dependency: https://raw.githubusercontent.com/rocks-moonscript-org/moonrocks-mirror/master/luacrypto-0.3.2-1.src.rock - Could not find header file for OPENSSL
No file openssl/evp.h in /usr/local/include
No file openssl/evp.h in /usr/include
You may have to install OPENSSL in your system and/or pass OPENSSL_DIR or OPENSSL_INCDIR to the luarocks command.
Example: luarocks install luacrypto OPENSSL_DIR=/usr/local1234512345
參照Problem with Torch #86,執行sudo apt-get install -y libssl-dev安裝libssl-dev,之後重新安裝Torch即可。
錯誤4
提示缺少依賴lbase64 ,luacrypto,uuid 等,可直接執行luarocks install missed-package解決。
Ⅷ 如何有效地閱讀PyTorch的源代碼
運行 python setup.py build ,生成一遍 (非 install,防止覆蓋已安裝的pytorch)
順著 setup.py build 命令看安裝過程,順著安裝過程看相關實現代碼
順著 __init__.py 看 python 中 import torch 時,怎麼把 C\C++ 代碼實現的函數與類載入起來的、python層引入了哪些庫