1. 程式人生 > >Theano FCN實現與訓練經驗與教訓小結

Theano FCN實現與訓練經驗與教訓小結

NaN

  • 計算softmax loss時要用numeric robust 的計算方式. softmax與 loss可能要分開計算. 得到前者的計算方式可以是常規方法. 但計算後者時要注意無窮大和NaN的出現.
  • NaN的出現一定是因為出現了無窮大. 無窮大的出現則是因為變數儲存的數值超出了變數資料型別能表示的最大值.使用GPU計算常用float32, 它的最大表示值在\(10^{38.5}\)附近.
  • learning_rate太大可能導致非數的出現: weight值會變得很大(超過10應該就算大了). 在forward的過程中會不斷乘以weight值, 這樣就會導致神經元的啟用值達到無窮大. 然後, 只要碰到值為0的weight(小概率)或與其他的無窮大, 就會出現NaN.
  • 畫素級別的loss的取均值決定learning_rate的數量級. 我使用\(224\times 224\)的圖片, 如果loss是對單個畫素的均值, 則數量級在\(10^{-5}\). 如果是對單張圖片的loss, 要再小4個數量級.(caffe fcn使用了\(10^{-10}\))
  • 出現問題時要積極尋找到問題來源, 重要的問題說三遍:出現問題時要積極尋找到問題來源, 出現問題時要積極尋找到問題來源. 不能瞎猜, 更不能直接放棄.

loss不下降了

  • 先嚐試使用更小的learning_rate, 如果不行, 就嘗試更大的. 在使用不同大小的learning_rate訓練網路的過程中, learning_rate並非一定要遞減. 這是親身體驗過的. 原因不明, 可能是因為大的learning_rate讓weight set跳入了一個更好的basin.

相關推薦

Theano FCN實現訓練經驗教訓小結

NaN 計算softmax loss時要用numeric robust 的計算方式. softmax與 loss可能要分開計算. 得到前者的計算方式可以是常規方法. 但計算後者時要注意無窮大和NaN的出現. NaN的出現一定是因為出現了無窮大. 無窮大的出現則是因為變數儲存的數值超出了變數資料型別能表示的最

經驗教訓:值得注意的測試資料

一定要考慮建立處理預設值、空白、空值、零值或者無輸入等條件的等價區間。因為這些值通常在軟體中進行特殊處理,所以不要把它們與合法情況和非合法情況混在一起,而要建立單獨的等價區間。在這種預設情況下,如果使用者輸入0或者-1作為非法值,就可以執行不同的軟體處理過程。 非法、錯誤、不正確和垃圾資料的測試是很

面試經驗教訓

今天上午去參加了一個金融公司的C++面試,有以下幾點收穫: 1. 去之前我認為需要學習BTC和ETH的程式碼,但面試時沒有問; 2. 面試官對C++ 的要求很基礎,例如繼承、多臺、虛擬函式、編譯連結執行的過程; 3. 面試官說c++每個月需要提交的有效程式碼量是一萬行,而我從做專案到現在

讀後感:軟體測試經驗教訓

很巧合的,按照一開始的序言建議,歷經三個月才把這本書啃完。一方面是每天的時間在分散著用,勻給它的時間屈指可數;另一方面是自身的喜好,我更喜歡閱讀紙質書,對於電子書,僅存的耐心是有限的。 不得不說,這本書裡有很多值得我學習的地方,並且有不少是我踩過的坑,比如發現bug的時候,

經驗教訓:產品說明書屬性檢查

產品說明書屬性檢查清單。優秀的產品說明書應該具有8個重要的屬性: 完整。是否有遺漏和丟失?完全嗎?單獨使用是否包含全部內容? 準確。既定解決方案正確嗎?目標明確嗎?有沒有錯誤? 精確、不含糊、清晰。描述是否一清二楚?容易看懂和理解嗎? 一致。產品功能描述是否自相矛盾,

最近兩篇Nature子刊的經驗教訓

應一些朋友要求,寫寫自己最近兩篇文章(一篇article,一篇letter)的一些感想和教訓,算是對前期工作的一個總結。首先報簡歷:04-08(本科),08-至今 (研究生),土博一個,暫時還沒出過國門。介紹一下兩個子刊Nature Geoscience和Nature Co

python中如何實現將資料分成訓練測試集

接下來,直接給出大家響應的程式碼,並對每一行進行標註,希望能夠幫到大家。 需要用到的是庫是。numpy 、sklearn。 #匯入相應的庫(對資料庫進行切分需要用到的庫是sklearn.model

swift UI專項訓練42 用Swift程式碼實現頁面跳轉傳值

   之前我們做過如果要點選一個按鈕實現跳轉到另一個按鈕的辦法,有時候我們需要通過一些動作來觸發頁面的跳轉,比如搖動手機,這樣就不能直接用連線的辦法來實現跳轉了,那麼如何通過程式碼的方式來實現跳轉呢?依舊使用過渡的方法,在storyboard中把要實現跳轉的兩張頁面連線,注

考研:成功的經驗失敗的教訓 ——2017清華電機系慘敗,2018跨考武大計算機成功!

考研:成功的經驗與失敗的教訓——2017清華電機系慘敗,2018跨考武大計算機成功!我的情況:大一下開始接觸考研,啟蒙老師是朱偉,聽過的課程、買過的資料相當之多,主要有:政治:徐濤、石磊、徐之明、王吉、趙卯生、肖大大等英語:何凱文、商志、朱偉、劉曉燕、曹天嘯、唐遲、譚劍波、劉

【總結】經驗教訓

程式碼查錯 認真讀題,比如題目的資料範圍。 觀察每個變數名是否有誤,每個型別是否有誤,每個運算子是否有誤(<,>,=,+=),規定的輸出格式是否有誤。 考慮邊界情況,0,1,-1,上限,下

【速度質量】敏捷團隊快速交付高品質軟體的經驗教訓:導讀

1. 哲學終極三問 據說,西方哲學有三大問題:我是誰?我從哪裡來?我到哪裡去?思考這個問題的答案,可以讓人跟清楚的認識自己。 因此,我試圖為這個系列文章回答上述三個問題,方便他人快速瞭解其概要。 1.1 這是個啥? 系列文章寫作思路來源於《軟體測試經驗與教訓

阿里巴巴 Kubernetes 應用管理實踐中的經驗教訓

作者 | 孫健波(阿里巴巴技術專家)、趙鈺瑩 導讀:雲原生時代,Kubernetes 的重要性日益凸顯。然而,大多數網際網路公司在 Kubernetes 上的探索並非想象中順利,Kubernetes 自帶的複雜性足以讓一批開發者望而卻步。本文中,阿里巴巴技術專家孫健波在接受採訪時基於阿里巴巴 Kuberne

阿里巴巴的 Kubernetes 應用管理實踐經驗教訓

作者 | 孫健波(天元)  阿里巴巴技術專家 導讀:本文整理自孫健波在 ArchSummit 大會 2019 北京站演講稿記錄。首先介紹了阿里巴巴基於 Kubernetes 專案進行大規模應用實踐過程中遇到的問題;隨後會逐一介紹解決這些問題的現有實踐及其本身存在的侷限性;最後會介紹阿里巴巴目前

jqury簡易實現checkbox反選全選

all 效果 mage aps 簡單 一段 .cn 改變 定義 前段時間,一個同事讓我幫忙寫個全選與反選的功能,本來一段很簡單的代碼,突然卡頓,寫了好幾個小時,其實之前也做過類似的功能,只是一下子就懵逼了,簡而言之還是自己對checkbox的反選與全選沒有掌握十足,所以再利

iOS開發項目實戰——Swift實現圖片輪播瀏覽

0.10 上網 timer類 開發項目 cas hub string obj tle 近期開始開發一個新的iOS應用,自己決定使用Swift。進行了幾天之後,發現了一個非常嚴峻的問題。那就是無論是書籍,還是網絡資源,關於Swift的實在是太少了,隨便一

【Spark深入學習 -14】Spark應用經驗程序調優

aps 它的 stack 申請 vco 用戶 統一 persist 資料 ----本節內容------- 1.遺留問題解答 2.Spark調優初體驗 2.1 利用WebUI分析程序瓶頸 2.2 設置合適的資源 2.3 調整任務的並發度

PHP實現簡單的評論回復功能還有刪除信息

技術分享 mit [0 ech ges get values width 錯誤 我們首先先看一下功能 上面黑色的是評論的下面紅色的字體是回復的 再來看看怎麽實現的 1.發布評論 <form action="pinglunchili.php" method="po

microduino實現紅外線發送接收

class result 引腳 做的 .cn col recv 閃爍 程序 一、目標:使用microduino套件實現紅外線的發送與接收 二、材料:(1)模塊:Microduino Core/Core+ (核心板),Microduino-USBTTL(下載程序)

[編織消息框架][netty源碼分析]7 Unsafe 實現類NioSocketChannelUnsafe職責實現

實現 final .get 綁定 emp 通知 com over dex Unsafe 是channel的內部接口, 負責跟socket底層打交道。從書寫跟命名上看是不公開給開發者使用的,直到最後實現NioSocketChannelUnsafe也沒有公開出去 publ

[編織消息框架][netty源碼分析]9 Promise 實現類DefaultPromise職責實現

flush alt read true boolean listener seconds ren ces netty Future是基於jdk Future擴展,以監聽完成任務觸發執行Promise是對Future修改任務數據DefaultPromise是重要的模板類,其它