PyTorch學(xué)習(xí):動(dòng)態(tài)圖和靜態(tài)圖的例子
動(dòng)態(tài)圖和靜態(tài)圖
目前神經(jīng)網(wǎng)絡(luò)框架分為靜態(tài)圖框架和動(dòng)態(tài)圖框架,PyTorch 和 TensorFlow、Caffe 等框架最大的區(qū)別就是他們擁有不同的計(jì)算圖表現(xiàn)形式。 TensorFlow 使用靜態(tài)圖,這意味著我們先定義計(jì)算圖,然后不斷使用它,而在 PyTorch 中,每次都會(huì)重新構(gòu)建一個(gè)新的計(jì)算圖。通過這次課程,我們會(huì)了解靜態(tài)圖和動(dòng)態(tài)圖之間的優(yōu)缺點(diǎn)。
對于使用者來說,兩種形式的計(jì)算圖有著非常大的區(qū)別,同時(shí)靜態(tài)圖和動(dòng)態(tài)圖都有他們各自的優(yōu)點(diǎn),比如動(dòng)態(tài)圖比較方便debug,使用者能夠用任何他們喜歡的方式進(jìn)行debug,同時(shí)非常直觀,而靜態(tài)圖是通過先定義后運(yùn)行的方式,之后再次運(yùn)行的時(shí)候就不再需要重新構(gòu)建計(jì)算圖,所以速度會(huì)比動(dòng)態(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è)圖構(gòu)建成靜態(tài)的,換句話說,每次運(yùn)行的時(shí)候圖都是一樣的,是不能夠改變的,所以不能直接使用 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í):動(dòng)態(tài)圖和靜態(tài)圖的例子就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python連接Azure Storage進(jìn)行數(shù)據(jù)交互的實(shí)現(xiàn)
本文主要介紹了Python連接Azure Storage進(jìn)行數(shù)據(jù)交互的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02淺談Django中view對數(shù)據(jù)庫的調(diào)用方法
今天小編就為大家分享一篇淺談Django中view對數(shù)據(jù)庫的調(diào)用方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07詳解在Python中創(chuàng)建條形圖追趕動(dòng)畫
動(dòng)畫是使可視化更具吸引力和用戶吸引力的好方法。它幫助我們以有意義的方式展示數(shù)據(jù)可視化。Matplotlib是一個(gè)非常流行的數(shù)據(jù)可視化庫,通常用于數(shù)據(jù)的圖形表示以及使用內(nèi)置函數(shù)的動(dòng)畫。本文將用Matplotlib繪制條形圖追趕動(dòng)畫,需要的可以參考一下2022-03-03使用Python實(shí)現(xiàn)圖像有效壓縮的方法
在數(shù)字時(shí)代,圖像作為信息傳遞的重要媒介,在網(wǎng)頁設(shè)計(jì)、移動(dòng)應(yīng)用和多媒體制作中扮演著不可或缺的角色,本文將詳細(xì)介紹如何使用Python,一個(gè)功能強(qiáng)大且易于學(xué)習(xí)的編程語言,來實(shí)現(xiàn)圖像的有效壓縮,感興趣的朋友可以參考下2024-03-03Python 讀取 YUV(NV12) 視頻文件實(shí)例
今天小編就為大家分享一篇Python 讀取 YUV(NV12) 視頻文件實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12python使用篩選法計(jì)算小于給定數(shù)字的所有素?cái)?shù)
這篇文章主要為大家詳細(xì)介紹了python使用篩選法計(jì)算小于給定數(shù)字的所有素?cái)?shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03