PyTorch學(xué)習(xí):動態(tài)圖和靜態(tài)圖的例子
動態(tài)圖和靜態(tài)圖
目前神經(jīng)網(wǎng)絡(luò)框架分為靜態(tài)圖框架和動態(tài)圖框架,PyTorch 和 TensorFlow、Caffe 等框架最大的區(qū)別就是他們擁有不同的計算圖表現(xiàn)形式。 TensorFlow 使用靜態(tài)圖,這意味著我們先定義計算圖,然后不斷使用它,而在 PyTorch 中,每次都會重新構(gòu)建一個新的計算圖。通過這次課程,我們會了解靜態(tài)圖和動態(tài)圖之間的優(yōu)缺點。
對于使用者來說,兩種形式的計算圖有著非常大的區(qū)別,同時靜態(tài)圖和動態(tài)圖都有他們各自的優(yōu)點,比如動態(tài)圖比較方便debug,使用者能夠用任何他們喜歡的方式進(jìn)行debug,同時非常直觀,而靜態(tài)圖是通過先定義后運(yùn)行的方式,之后再次運(yùn)行的時候就不再需要重新構(gòu)建計算圖,所以速度會比動態(tài)圖更快。
# tensorflow import tensorflow as tf first_counter = tf.constant(0) second_counter = tf.constant(10) # tensorflow import tensorflow as tf first_counter = tf.constant(0) second_counter = tf.constant(10) def cond(first_counter, second_counter, *args): return first_counter < second_counter def body(first_counter, second_counter): first_counter = tf.add(first_counter, 2) second_counter = tf.add(second_counter, 1) return first_counter, second_counter c1, c2 = tf.while_loop(cond, body, [first_counter, second_counter]) with tf.Session() as sess: counter_1_res, counter_2_res = sess.run([c1, c2]) print(counter_1_res) print(counter_2_res)
可以看到 TensorFlow 需要將整個圖構(gòu)建成靜態(tài)的,換句話說,每次運(yùn)行的時候圖都是一樣的,是不能夠改變的,所以不能直接使用 Python 的 while 循環(huán)語句,需要使用輔助函數(shù) tf.while_loop 寫成 TensorFlow 內(nèi)部的形式
# pytorch import torch first_counter = torch.Tensor([0]) second_counter = torch.Tensor([10]) while (first_counter < second_counter)[0]: first_counter += 2 second_counter += 1 print(first_counter) print(second_counter)
可以看到 PyTorch 的寫法跟 Python 的寫法是完全一致的,沒有任何額外的學(xué)習(xí)成本
以上這篇PyTorch學(xué)習(xí):動態(tài)圖和靜態(tài)圖的例子就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python3讀取UTF-8文件及統(tǒng)計文件行數(shù)的方法
這篇文章主要介紹了Python3讀取UTF-8文件及統(tǒng)計文件行數(shù)的方法,涉及Python讀取指定編碼文件的相關(guān)技巧,需要的朋友可以參考下2015-05-05
Python實現(xiàn)xml格式轉(zhuǎn)txt格式的示例代碼
VOC 的標(biāo)注是xml格式的,而YOLO是.txt格式,所以要實現(xiàn)VOC數(shù)據(jù)集轉(zhuǎn)YOLO數(shù)據(jù)集,只能利用代碼實現(xiàn)。所以本文為大家介紹了Python中xml轉(zhuǎn)txt的示例代碼,需要的可以參考一下2022-03-03
python 捕獲 shell/bash 腳本的輸出結(jié)果實例
下面小編就為大家?guī)硪黄猵ython 捕獲 shell/bash 腳本的輸出結(jié)果實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01
Python函數(shù)的參數(shù)常見分類與用法實例詳解
這篇文章主要介紹了Python函數(shù)的參數(shù)常見分類與用法,結(jié)合實例形式較為詳細(xì)的分析了Python函數(shù)的形參、實參、默認(rèn)參數(shù)、可變參數(shù)等概念、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下2019-03-03
淺談Django QuerySet對象(模型.objects)的常用方法
這篇文章主要介紹了淺談Django QuerySet對象(模型.objects)的常用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Python實現(xiàn)批量備份交換機(jī)配置+自動巡檢
這篇文章主要為大家詳細(xì)介紹了Python實現(xiàn)批量備份交換機(jī)配置+自動巡檢的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-11-11

