keras加載模型權(quán)重繼續(xù)訓(xùn)練 keras訓(xùn)練好的網(wǎng)絡(luò),怎么在c 程序中調(diào)用?
keras訓(xùn)練好的網(wǎng)絡(luò),怎么在c 程序中調(diào)用?我試著用其他的訓(xùn)練數(shù)據(jù)來(lái)調(diào)用Java。一些建議。首先,如果訓(xùn)練模型很小,可以先得到訓(xùn)練參數(shù),然后用C語(yǔ)言調(diào)用,當(dāng)然,矩陣的計(jì)算需要自己準(zhǔn)備。我以前是這樣
keras訓(xùn)練好的網(wǎng)絡(luò),怎么在c 程序中調(diào)用?
我試著用其他的訓(xùn)練數(shù)據(jù)來(lái)調(diào)用Java。一些建議。首先,如果訓(xùn)練模型很小,可以先得到訓(xùn)練參數(shù),然后用C語(yǔ)言調(diào)用,當(dāng)然,矩陣的計(jì)算需要自己準(zhǔn)備。
我以前是這樣的,但它有很大的局限性。最大的問(wèn)題是這種方法的前提,當(dāng)模型不復(fù)雜時(shí)。這樣,公共應(yīng)用服務(wù)器仍然可以承受計(jì)算負(fù)載。
但是,如果模型復(fù)雜,則不建議這樣做。機(jī)器無(wú)法運(yùn)行,針對(duì)性的浮點(diǎn)優(yōu)化也無(wú)法在短時(shí)間內(nèi)解決。此時(shí)仍建議使用培訓(xùn)機(jī)通過(guò)web服務(wù)完成Python的遠(yuǎn)程調(diào)用,實(shí)現(xiàn)業(yè)務(wù)應(yīng)用。
keras已訓(xùn)練好模型,一段時(shí)間后又有新數(shù)據(jù),如何在已有模型基礎(chǔ)上繼續(xù)做增量訓(xùn)練?
我也是一個(gè)菜鳥,可以作為溝通。。。
在我看來(lái),如果網(wǎng)絡(luò)不需要調(diào)整(例如不添加新的類別),只需使用一個(gè)小的學(xué)習(xí)率來(lái)微調(diào)網(wǎng)絡(luò)的所有數(shù)據(jù)。
如果網(wǎng)絡(luò)結(jié)構(gòu)發(fā)生變化(如增加新的類別),在前期(如conv層)固定網(wǎng)絡(luò)參數(shù),后期(如FC層)直接學(xué)習(xí)參數(shù)。然后放開凍結(jié),微調(diào)大局。
Keras還是TensorFlow,程序員該如何選擇深度學(xué)習(xí)框架?
如果您想用少量代碼盡快構(gòu)建和測(cè)試神經(jīng)網(wǎng)絡(luò),keras是最快的,而且順序API和模型非常強(qiáng)大。而且keras的設(shè)計(jì)非常人性化。以數(shù)據(jù)輸入和輸出為例,與keras的簡(jiǎn)單操作相比,tensorflow編譯碼的構(gòu)造過(guò)程非常復(fù)雜(尤其對(duì)于初學(xué)者來(lái)說(shuō),大量的記憶過(guò)程非常痛苦)。此外,keras將模塊化作為設(shè)計(jì)原則之一,用戶可以根據(jù)自己的需求進(jìn)行組合。如果你只是想快速建立通用模型來(lái)實(shí)現(xiàn)你的想法,keras可以是第一選擇。
但是,包裝后,keras將變得非常不靈活,其速度相對(duì)較慢。如果高度包裝,上述缺點(diǎn)將更加明顯。除了一些對(duì)速度要求較低的工業(yè)應(yīng)用外,由于tensorflow的速度較高,因此會(huì)選擇tensorflow
如果您在驗(yàn)證您的想法時(shí),想定義損失函數(shù)而不是使用現(xiàn)有的設(shè)置,與keras相比,tensorflow提供了更大的個(gè)性空間。此外,對(duì)神經(jīng)網(wǎng)絡(luò)的控制程度將在很大程度上決定對(duì)網(wǎng)絡(luò)的理解和優(yōu)化,而keras提供的權(quán)限很少。相反,tensorflow提供了更多的控制權(quán),比如是否訓(xùn)練其中一個(gè)變量、操作梯度(以獲得訓(xùn)練進(jìn)度)等等。
盡管它們都提供了深度學(xué)習(xí)模型通常需要的功能,但如果用戶仍然追求一些高階功能選擇,例如研究特殊類型的模型,則需要tensorflow。例如,如果您想加快計(jì)算速度,可以使用tensorflow的thread函數(shù)來(lái)實(shí)現(xiàn)與多個(gè)線程的相同會(huì)話。此外,它還提供了調(diào)試器功能,有助于推斷錯(cuò)誤和加快操作速度。
學(xué)Python一定要會(huì)算法嗎?
開始時(shí),您不必很好地學(xué)習(xí)算法。但是隨著技術(shù)的發(fā)展,仍然需要算法,否則只能做一些工作。
1. 學(xué)好軟件開發(fā)離不開計(jì)算機(jī)理論基礎(chǔ),比如數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、網(wǎng)絡(luò)技術(shù)、算法研究等,如果你喜歡這項(xiàng)技術(shù),那就不是問(wèn)題。先開始,你可以彌補(bǔ)。
2. 算法是軟件開發(fā)的靈魂。好的算法寫不出好的程序。
3. 如何學(xué)習(xí)算法,首先選擇經(jīng)典算法教材?;镜目梢詮臄?shù)據(jù)結(jié)構(gòu)中學(xué)習(xí),其中包含一些基本的算法,然后再學(xué)習(xí)特殊的算法(實(shí)際上,在數(shù)據(jù)結(jié)構(gòu)領(lǐng)域?qū)W習(xí)算法一般就足夠了)。網(wǎng)上還有很多論壇、算法網(wǎng)站,為了吸引眼球,它們一般都很通俗易懂。大多數(shù)算法都是C語(yǔ)言,但是語(yǔ)言在算法層次上是相互聯(lián)系的,因此理解算法模型是最重要的。
4. 萬(wàn)事開頭難。只要你開始,剩下的就是慢慢操作這項(xiàng)技術(shù)。該算法在實(shí)際應(yīng)用中是最快、最強(qiáng)的。
我希望它能幫助你
雖然NVIDIA顯卡有CUDA,amd顯卡也有OpenCL。事實(shí)上,CUDA和OpenCL都是通用的并行計(jì)算,但CUDA是NVIDIA成熟的開發(fā)平臺(tái),工具箱比較齊全,比較專業(yè),比較封閉,OpenCL是一個(gè)開放的標(biāo)準(zhǔn),應(yīng)用比較廣泛,被軟硬件廠商廣泛使用。
就科學(xué)計(jì)算而言,CUDA對(duì)開發(fā)人員更友好,應(yīng)用更廣泛。這與CUDA相對(duì)完整的開發(fā)工具包有很大關(guān)系。經(jīng)過(guò)多年的開發(fā),CUDA擁有比OpenCL更好的生態(tài)系統(tǒng),它更易于使用,對(duì)程序員也更友好。雖然OpenCL是開放的,但是它的API設(shè)計(jì)很怪異,缺乏一致性,并且它的函數(shù)不是正交的,這并不簡(jiǎn)單,它還遠(yuǎn)遠(yuǎn)不夠成熟。
Amd顯卡目前不支持CUDA,但只能支持OpenCL。在一些科學(xué)計(jì)算程序中,AMD顯卡的計(jì)算效率明顯低于N顯卡。這就是CUDA的優(yōu)勢(shì)。amd之所以沒(méi)有像CUDA那樣開發(fā)API,是因?yàn)閍md沒(méi)有足夠的實(shí)力來(lái)制定這個(gè)標(biāo)準(zhǔn)。英偉達(dá)早在2006年就開始在gtx8800顯卡上推出CUDA,經(jīng)過(guò)這么多年的發(fā)展,英偉達(dá)已經(jīng)投入了巨大的人力物力取得了今天的成績(jī),包括一年一度的GTC大會(huì),在CUDA和相關(guān)技術(shù)推廣方面做了大量的工作,而amd顯然缺乏這樣的工作。
事實(shí)上,作為同時(shí)開發(fā)CPU和GPU的半導(dǎo)體制造商,AMD要做到這一點(diǎn)并不容易。在資金不能大幅度增長(zhǎng)的情況下,顯卡業(yè)務(wù)只要做好自己的工作就非常好。至于新的API標(biāo)準(zhǔn),顯然很難做到。我們只能期待OpenCL有一個(gè)更好的未來(lái)。
為什么A卡不像N卡那樣,開發(fā)類似CUDA的API,從而可以做科學(xué)計(jì)算?
呵呵,你才剛一年級(jí),剛剛學(xué)了一點(diǎn)語(yǔ)言。甚至不是初學(xué)者。毫不夸張地說(shuō),學(xué)習(xí)電腦就是拼數(shù)學(xué)。光靠學(xué)幾門語(yǔ)言你什么都做不了。特別是在編程實(shí)現(xiàn)某些函數(shù)時(shí),如果數(shù)學(xué)學(xué)得不好,就不能設(shè)計(jì)出合適的算法。數(shù)學(xué)建模非常重要。我勸你不要想當(dāng)然。讓我們來(lái)看看傅立葉變換,這是最常見的一個(gè)高數(shù)字。利用傅立葉變換設(shè)計(jì)低通濾波器是圖像處理中最常用的基本功能之一。
同樣,機(jī)器語(yǔ)言本身是一個(gè)二進(jìn)制矩陣。圖像的本質(zhì)也是由像素組成的矩陣。然后你就會(huì)知道線性代數(shù)的重要性。然后對(duì)各種圖像、信號(hào)進(jìn)行放大和縮小,需要用到各種插值,那么你會(huì)后悔離散數(shù)學(xué)沒(méi)學(xué)過(guò)。當(dāng)你學(xué)習(xí)信息論和通信原理時(shí),你會(huì)后悔沒(méi)有理解復(fù)變函數(shù)和概率。。。。。
即使是大二專業(yè)基礎(chǔ)課使用的數(shù)據(jù)結(jié)構(gòu),堆棧、列、排序、二叉樹、哈希圖、遞歸等。。。。都是數(shù)學(xué)模型。。。
如果你真的想學(xué)好編程,你必須徹底地學(xué)習(xí)數(shù)學(xué)。至于編程語(yǔ)言,這完全是語(yǔ)法結(jié)構(gòu)的問(wèn)題。是一樣的。編程側(cè)重于算法。至于用什么語(yǔ)言,是膚淺和膚淺的。就像寫一本書,一部經(jīng)典,把它翻譯成任何語(yǔ)言。如廁讀物,如果你用八種語(yǔ)言寫的話,也是如廁讀物。
剛上大一,報(bào)的計(jì)科,學(xué)了一年的c和JAVA,都說(shuō)計(jì)算機(jī)和數(shù)學(xué)關(guān)系緊密,可為啥沒(méi)有感覺(jué)到?感到迷茫?
近年來(lái),隨著信息社會(huì)、學(xué)習(xí)科學(xué)和課程改革的發(fā)展,深度學(xué)習(xí)是一種新的學(xué)習(xí)形式。
目前,對(duì)深度學(xué)習(xí)的概念有很多答案,很多專家學(xué)者的解釋是本質(zhì)意義一致的表述略有不同。
李嘉厚教授認(rèn)為,深度學(xué)習(xí)是建立在理解的基礎(chǔ)上的。學(xué)習(xí)者可以批判性地學(xué)習(xí)新的想法和事實(shí),將它們?nèi)谌朐械恼J(rèn)知結(jié)構(gòu),將許多想法聯(lián)系起來(lái),并將現(xiàn)有的知識(shí)轉(zhuǎn)移到新的情境中,從而做出決策和解決問(wèn)題。
郭華教授認(rèn)為,深度學(xué)習(xí)是在教師指導(dǎo)下的一個(gè)有意義的學(xué)習(xí)過(guò)程,學(xué)生圍繞挑戰(zhàn)性的學(xué)習(xí)主題,全心投入,體驗(yàn)成功,獲得發(fā)展。它具有批判性理解、有機(jī)整合、建設(shè)性反思和遷移應(yīng)用的特點(diǎn)。
深度學(xué)習(xí)有幾個(gè)特點(diǎn)。一是觸動(dòng)人心的學(xué)習(xí)。第二,體驗(yàn)式學(xué)習(xí)。三是深入認(rèn)識(shí)和實(shí)踐創(chuàng)新的研究。