revit找不到附加模块程序集_TensorFlow基础知识——常用模块(一)
生活随笔
收集整理的這篇文章主要介紹了
revit找不到附加模块程序集_TensorFlow基础知识——常用模块(一)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1
本節(jié)簡述
對于開展深度學(xué)習(xí)開發(fā)的目標(biāo)而言,我們需要掌握的除了必要的深度學(xué)習(xí)理論基礎(chǔ)、必要的開發(fā)依賴庫基礎(chǔ)知識、基本的開發(fā)套路之外,我們還需要掌握它常見的外圍小幫手都有哪些。這些小幫手就是深度學(xué)習(xí)依賴庫中的其他并不是核心的模塊,但卻能有效幫助我們提升開發(fā)的效率,提升學(xué)習(xí)模型的質(zhì)量等。因此,從這一節(jié)開始,我們將逐步開始分享一些TensorFlow庫中的模塊知識,期待著這些模塊的基本知識分享結(jié)束之后,我們能夠?qū)懗龈咝У腄L程序,提升我們的DL能力。常用到的模塊除了前面我們提到過的tf.keras模塊、tf.data模塊、tensorflow_datasets庫、tf.math等模塊之外,我們還會比較多的用到以下這些模塊:1、保存模型訓(xùn)練過程中的各種參數(shù),主要是各個神經(jīng)網(wǎng)絡(luò)層中的神經(jīng)元中的權(quán)重系數(shù)與偏置值等,這樣做的好處是:當(dāng)我們下一次需要用到這個模型時,就可以不必再訓(xùn)練一次,直接導(dǎo)出被保存好的模型訓(xùn)練參數(shù)值即可使得該模型被用于開展預(yù)測工作。注意,這里只是保存模型的訓(xùn)練參數(shù),并不將整個模型進行保存。通常我們使用一個名叫:tf.train.checkpoint的模塊來幫我們做到這一點;2、我們都知道TensorFlow庫在幫我們訓(xùn)練學(xué)習(xí)模型時,期間的訓(xùn)練過程,我們不需要過多關(guān)心。因此也看不到它們內(nèi)部究竟是怎么訓(xùn)練的,各個參數(shù)之間又是如何發(fā)生的變化。但人類總是充滿好奇心,我們?nèi)绻胍慷糜?xùn)練過程中的各個參數(shù)的變化,那么我們就需要使用一個名叫:TensorBoard的庫來幫我們實現(xiàn)訓(xùn)練參數(shù)變化的可視化展示,不過該庫僅僅是一個外圍工具,真正用于記錄訓(xùn)練參數(shù)變化狀態(tài)的還是一個叫:tf.summary的模塊;3、在深度學(xué)習(xí)算法模型訓(xùn)練前,我們需要加載相關(guān)的數(shù)據(jù)集。這是我們開展訓(xùn)練的前提。因此,在這一步,我們也有一些優(yōu)化文章可以做,比如把數(shù)據(jù)集變個樣子,使得學(xué)習(xí)模型加載起來更高效一些。這就是在TensorFlow庫中所提供的一個名叫tf.Example的模塊;4、在TensorFlow2.0版本中,所有的代碼都運行在即時執(zhí)行模式下,這是很靈活,且調(diào)試也很方便的。但有時我們?yōu)榱四芨奖悴渴饘W(xué)習(xí)模型或者追求更高的模型性能,也需要把運行模式從即時執(zhí)行模型切換到圖模式下執(zhí)行,此時就需要用到一個叫tf.function的模塊,這我們在之前也見到過,后面將會就此展開更深入的探討;5、深度學(xué)習(xí)之所以廣受歡迎,是因為它幾乎能將觸角伸及日常生產(chǎn)生活的每個角落。比如我們需要處理一段時間內(nèi)的流量廣告相關(guān)的問題,由于涉及到時間因素,屬于一種設(shè)計時間序列的問題,這時我們可能就需要用到一種能處理時間序列的數(shù)據(jù)結(jié)構(gòu),這在TensorFlow庫中有一個專門的模塊,叫tf.TensorArray,也稱之為動態(tài)數(shù)組。它能夠?qū)iT用于這種帶有時間數(shù)據(jù)的問題;6、GPU的配置問題。前面的分享中我們也大致提過,當(dāng)前的TensorFlow支持三種處理器下的運算:CPU、GPU以及TPU。TPU是專門的張量運算處理器,是谷歌搞的,目前最為高大上,我們這里暫且不說它。GPU我們大家不會太陌生:圖形處理器。只要我們的電腦中有英偉達(dá)的處理器,那你在電腦上安裝好的TensorFlow就可以基于GPU開展計算,這樣可比純粹地靠CPU來運行TensorFlow程序要高效快速得多。但是問題在于:1)、CPU、GPU共存時,TensorFlow默認(rèn)會基于GPU開展運算,可如果我們非要在CPU下計算呢?有啥辦法在代碼中進行指定嗎?2)、如果我們是個小土豪,電腦中配置好好幾塊的GPU,那么我們在TensorFlow程序中可不可以手動指定利用哪個GPU來開展運算?3)、GPU的內(nèi)存是有限的,如果全部TensorFlow程序占有了,那未免有點利用率低下的不足,可不可以對此也做一些限制?以上的問題都可以交給一個叫:tf.Config的模塊來幫我們搞定。7、有關(guān)tf.data模塊中的Dataset模塊,我們還有一些API尚未被提及,這里也要稍微聊一聊它們,畢竟它們的存在也有助于提升我們編寫高效的TensorFlow程序出來,還有助于提升模型訓(xùn)練效率;8、模型的保存與加載。這里的模型保存就不再只是像使用tf.Checkpoing模塊那樣的保存一些訓(xùn)練過程的參數(shù)了,而是要把所有與模型相關(guān)的全部數(shù)據(jù)都保存起來,包括它的參數(shù)配置、運行模式、模型內(nèi)部的網(wǎng)絡(luò)結(jié)構(gòu)等等。當(dāng)我們下一次需要再用到該模型時,只需要簡單地對其做一個加載,就可以直接用來做預(yù)測,不像tf.Checkpoint模塊的加載,只是加載了一些參數(shù),并不見得就能立即用來預(yù)測數(shù)據(jù),往往還需要進行過一定時間的模型訓(xùn)練。以上八個方面所代表的一些常用模塊基本上就構(gòu)成了我們開發(fā)出一個高質(zhì)量的TensorFlow程序的主要外圍模塊集。當(dāng)然,這只是針對多數(shù)情況而言。其他場合下,我們可能還需要用到一些其他的模塊,屆時,我們在講述具體的神經(jīng)網(wǎng)絡(luò)算法模型的具體實踐案例時,可能還會碰到一些在這里并未提及過的模塊與API,到那時,我們也會一一作出詳解。2
小結(jié)
這一節(jié)的知識僅僅做一個框架性地敘述,大體梳理一下我們在圍繞如何開發(fā)出高效的TensorFlow程序而展開的一些外圍模塊的概要介紹。接下來,我們將依次介紹這八個方面需要用到的相關(guān)模塊及模塊內(nèi)常用的API,并盡可能舉出一定的使用案例來加強我們對這些知識的理解。需要再次強調(diào)一點的是:不論是我們說Python的模塊還是說爬蟲的模塊還是說TensorFlow等Python庫的模塊,其實這些模塊最終的實現(xiàn)形式都是一個個的類。猶如一個大容器一樣,里邊包含了相關(guān)的屬性(也稱之為私有變量)以及如何操作這些屬性的方法——稱之為API。因此,如果在這里大家還對模塊這個詞匯有些不理解,不妨按照上面的解釋來領(lǐng)會模塊的意思。或者你還可以這么打個比方:模塊就好比一個廚房,那么廚房里必然有一些私有的屬性:比如、刀具、案板、灶具、碗筷等等基礎(chǔ)的東西。同時,這個廚房還必須要為我們提供一些干活的方法:比如切菜就是一個方法,炒菜又是一個方法,端菜也是一個方法。只不過這些方法有些僅局限在廚房內(nèi)部,稱之為私有方法。對客廳啊、臥室之類的范圍是不可見,也沒必要見的。有些則是公有方法,是需要在廚房與其他空間之間開展聯(lián)系用的,比如把菜從廚房端到餐廳這個方法就是一個公有方法;而切菜、炒菜則是一個私有方法。只不過在程序的世界里,對私有方法、私有變量、公有方法等都做了一些使用上的嚴(yán)格限制:私有的東西一律只能在類的內(nèi)部被調(diào)用,不可被類的外部使用者操縱,否則就是犯法了。公有方法就是外部與類唯一的交流渠道。這一點就與我們現(xiàn)實中的要求有些不同。好了,以上就是這一節(jié)的簡要知識介紹,謝謝大家。總結(jié)
以上是生活随笔為你收集整理的revit找不到附加模块程序集_TensorFlow基础知识——常用模块(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拼多多“真香节”是什么节日?
- 下一篇: 小炒黄牛肉怎么好吃怎么才好看?