❶ keras 如何保存訓練集與驗證集正確率的差最小那次epoch的網路及權重
1、我認為模型是用訓練數據集訓練出來的,然後用驗證數據集來驗證就可以看出是否過度擬合 我這里是SAS9.4中文版的,使用「簡單隨機」抽樣方法,該方法使得兩個數據集沒有交集,能夠更好驗證是否過度擬合 一種方法是比較ROC值,如果訓練的比驗證的。
❷ 如何從零使用 Keras + TensorFlow 開發一個復雜深度學習模型
最近剛開始使用theano, 經驗不多,連個基本的模型都跑不通,於是去看了下Keras,源碼比較簡潔,可以當作theano的示例教程來看,感受如下:
文檔看似很全,每個layer是幹啥的,每個參數是啥都寫了,但是不去讀代碼,實際很多人是無法從文檔理解其具體用法的。這點看issue里的討論里可以看出。同樣,example似乎很多,而且都能直接run,還都是real world的數據集,看似很好,但是實際上,對於新手,如果需要的模型跟example里的不完全一樣,不容易搞懂到底需要把輸入輸出的數據搞成啥格式。舉個例子,example都是做的classification的,沒有做sequence labeling的例子,如果想拿來做個pos tagging,不知道數據如何組織。當然,這些其實花一天讀下代碼或者好好翻翻issue討論就可以解決了,但我相信不少人不會去認真讀代碼或者看討論,而是直接換個工具。我感覺目前的doc只有懂了代碼的人才能看懂,不懂得看文檔還是沒啥用。
2.項目很簡單所以開發者不多,但是很活躍,每天都有新東西加進去。今天增加了一個新的分支後端可以用theano或者tensorflow了,不過貌似由於不支持scan,backend用tensorflow的沒實現recurrent layer。他們也意識到文檔的問題,覺得需要為小白用戶多加點tutorial而不是光給develop看。
我沒用過其他的framework,僅說keras</ol>拿來學習theano基本用法,很不錯
庫本身的代碼,比較簡單易讀,我作為python菜鳥,也能看懂。目前model有sequential和grapgh兩種,前者並不是指recurrent而是說網路是一層層堆的(也包括recurrent).其他的主要概念包括layer,regularizer, optimizer,objective都分離開。layer用於build每層的輸出函數,model會用最後一層的輸出,根據objective和每個layer的regularizer來確定最終的cost,然後在update時用optimizer來更新參數。把這四個看下加上model里的fit函數,就會用theano啦。很多模型都能cover,seq2seq這種也有現成的可用。建議不要光看example,多看看github上的 issues討論,實在找不到,直接提問。效率方面,我不懂theano怎麼優化,感覺keras的這種封裝,沒什麼成本,跟自己用原生theano是一樣的。當然,theano本身就好慢啊。。估計是我不懂用吧。。
❸ 怎麼在keras中定義自己的目標函數
keras的後台支持tensorflow和theano,默認是tensorflow可以通過修改配置文件或定義環境變數來進行修改,詳見keras文檔。KERAS_BACKEND=tensorflowpython-c"fromkerasimportbackend"
❹ 《DeepLearningwithKeras》pdf下載在線閱讀,求百度網盤雲資源
《Deep Learning with Keras》(Antonio Gulli)電子書網盤下載免費在線閱讀
資源鏈接:
鏈接:https://pan..com/s/1VJWd7nxHXg_t-AsnI5UIgg
書名:Deep Learning with Keras
作者:Antonio Gulli
豆瓣評分:7.8
出版社:Packt Publishing - ebooks Account
出版年份:2017-5-4
頁數:322
❺ 深度學習有哪些好玩的且易於實現的論文
0. GitHub - Rochester-NRT/RocAlphaGo: An independent, student-led replication of DeepMind's 2016 Nature publication, "Mastering the game of Go with deep neural networks and tree search" (Nature 529, 484-489, 28 Jan 2016), details of which can be found on their website https://deepmind.com/publications.html.
這個項目火遍大江南北啊,就是第三方根據AlphaGo的論文給出的實現。最近工作太忙沒空去看具體細節,底層用的是keras,具體的細節大家可以看看paper。另外今天發現了一個不錯的slide: http://www.slideshare.net/ShaneSeungwhanMoon/how-alphago-works
當初和李世石大戰的時候有很多」專家「都出來講過這篇paper,包括在下……簡單來說,AlphaGo的架構和傳統的圍棋AI相比並沒有傳統的創新,傳統的機器博弈的架構包括三部分:
主體:AlphaBeta樹
走子策略:某一步走哪最好
局面靜態評估:當前誰更厲害
每當對方走出一步棋,我方就開始用走子策略判斷一批優秀的候選著法,然後我們開始YY對方,針對我方的每一著,給對方選出一批優秀的著法進行對抗,以深入分析我方走子的可行性。然而由於棋局的復雜性,我們無法演繹到比賽結束,於是到達一定深度後,我們對當前的局勢進行估計,然後根據這個分數反推回去,得到我們最好的招數,也就是下棋人常說的」下棋要多看幾步「。
那麼AlphaGo的厲害之處就在於,它把其中的第二、三項換成了CNN,CNN一來我們就得到了兩個好處:1)它有強大的非線性映射能力,算出來的招數很厲害;2)CNN的深度學習能力使得搞圍棋不用像過去搞圍棋的人一樣得花大量時間學圍棋了!這點也是當初DeepMind在介紹Atari時說過的,一招CNN,搞定無數領域的難題。曾幾何時,我們做博弈的寫評估函數,都得對某種棋有很深的認識,基本上得做到業余中的佼佼者;現在有了CNN,你還是可以成為佼佼者,但是這方面的作用明顯沒有過去那麼有用了。
1. GitHub - jisungk/deepjazz: Deep learning driven jazz generation using Keras & Theano!
這個是用LSTM寫jazz風格的旋律,也是蠻厲害的!跑起來很容易,庫用的是Theano,python人民的老朋友!相對比較簡單。
[我准備最近把它啃下來把一些細節分享到這里!]
首先是music21這個庫,一個很強大的為音樂人士准備的庫(我以前怎麼沒發現這個庫,真心很贊!)
2. 最近AlphaGo太火了,於是乎推薦一個增強學習玩Flappy Bird的代碼:
GitHub - yenchenlin1994/DeepLearningFlappyBird: Flappy Bird hack using Deep Reinforcement Learning (Deep Q-learning).
親測有效,很有意思,相信它足夠好玩,也能激發大家的興趣
由於我之前用keras和caffe多一些,所以對tensorflow了解不多,這里貼個中文的文檔供大家參考源代碼:
TensorFlow官方文檔中文版_TensorFlow中文教程_TensorFlow開發中文手冊[PDF]下載
[這里補上小鳥的一些代碼總結]
flappy bird的程序主題上有兩個部分,一部分可以算作「預測」,就是根據模型指示具體的操作,一部分是「學習」,就是根據對局的信息調整模型。
整個項目的根基就是這個游戲本身,在增強學習中可以看作是「Environment」,也就是能接收Action並反饋Next State和Reward的。作者使用了別人寫好的現成的程序,不過還是在此基礎上做了一定的修改,使游戲能夠返回這兩個信息。對於Next State,則是下一個時刻的圖畫信息,對於Reward,主要就是能分了,穿過一對管子得一分,死掉得負分。
預測部分:作者採用了E&E的策略,除了以模型進行判定之外,還以一定概率隨機操作。
學習部分:當數據集收集到一定數量後開始學習,對於非完結的狀態,要根據Bellman Equation進行Return的計算(Return和Reward有一定的差別)。然後將(state,action,return)扔給模型學習。
模型:CNN,具體的參數README講得很清楚。
總體來看這就是一個模仿Atari實現的項目,不過他一板一眼地把把Atari的經驗借鑒了過來,也做到不錯的智能效果,所以值得一贊。
我仔細地看了關於這個項目的介紹,發現他的思想和Deep Mind的另一個增強學習的項目很相近,那就是Atari游戲。我找到了一個Github項目,沒有親測,後面有時間會做一下實驗:
GitHub - kuz/DeepMind-Atari-Deep-Q-Learner: The original code from the DeepMind article + my tweaks
兩個項目都是用CNN代替增強學習中的state-action-table,項目中的state就是當前的圖像(4幀),action就是用戶的操作(Flappy Bird就是點一下,昨天和同事聊同事還在說真正游戲里每點一下的輕重是有區別的,我想這個AI應該沒有考慮這一點),由於這個空間十分大,我們用CNN來表示它,而學習的關鍵,也就是把這個表(模型)學習出來。
3.深度學習的在github有一個合集:
GitHub - kjw0612/awesome-deep-vision: A curated list of deep learning resources for computer vision