在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用git管理數據科學試驗的經驗

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-11-24 09:21 ? 次閱讀

編者按:機器學習科學家分享了使用git管理數據科學試驗的經驗。

引言

版本控制是管理數據科學試驗的關鍵工具。但是,魔鬼在細節之中。這篇文章將討論如何在數據科學項目中實現版本控制。

git的使用有好幾種范式,就數據科學試驗而言,我基本上根據的是特性分支這一范式。簡單來說,特性分支意味著有一個master分支(主分支)作為基礎,新特性通過在主分支上分支的方式加入代碼基,做出實現特性需要的所有改動后,合并新分支至主分支。

策略

我為每個試驗或者想要嘗試的新建模思路創建一個新分支。這時你需要有意識地決策:代碼的修改只適用于這次試驗,還是希望在這次試驗和之前的試驗上都適用?換一種表述方式:你是打算替換,還是增益?這個問題的答案將決定你是否可以把新分支合并回主分支。

我建議額外花一點功夫,將關鍵組件提取出來,作為一個庫,在多次試驗中復用。這比有許多份相同(或者更糟,略有不同)的代碼要好很多,不用分別維護,也不易導致錯誤。俗話說得好,最好的代碼是沒有代碼。將關鍵組件提取至一個共享庫,你可以逐漸做出改進,并最終得到一個內聚的代碼基,可以在一系列試驗復用。相反,如果你不斷引入不向后兼容的改動,你會發現自己頻繁地在分支間跳轉,以便復制/粘貼有用的代碼片段,接著卻需要加以修改,因為組件沒有設計成能夠一起工作的。在較大的試驗中,這會變得很難操作。

特性分支這一方法的優勢在于你可以將試驗分支合并回主分支,接著運行任何試驗。這么做的代價是,當你對核心庫進行改動時,你也許需要同時修改其他試驗的實現。所以,和所有事情一樣,這是一個需要做出權衡的決策。在我的經驗中,這個方法能夠自然地演化,我發現,每當我想要復制粘貼的時候,都會想一下能否提取公共代碼。

例子

我推薦如下的目錄結構:

|-- core/

|-- tests/

|-- test_pull_data.py

|-- test_prepare_data.py

|-- test_model.py

|-- test_deploy.py

|-- test_utils.py

|-- pull_data.py

|-- prepare_data.py

|-- model.py

|-- deploy.py

|-- utils.py

|-- experiment_1/

|-- data/

|-- training.csv

|-- validation.csv

|-- test.csv

|-- output/

|-- results.json

|-- models/

|-- model1

|-- model2

|-- job_config.py

|-- build_data.py

|-- train.py

|-- evaluate.py

|-- prod.py

|-- experiment_2/

|-- data/

|-- training.csv

|-- validation.csv

|-- test.csv

|-- output/

|-- results.json

|-- models/

|-- model1

|-- model2

|-- job_config.py

|-- build_data.py

|-- train.py

|-- evaluate.py

|-- prod.py

在這一情形中,主要邏輯位于core目錄下。試驗以目錄的形式組織,其中包含為試驗執行核心邏輯的代碼,以及相應的輸入、輸出文件。實現代碼應該極為簡單,只做具體試驗特定的事情。例如,如果試驗是要比較A方法和B方法,那么它會引入A和B的配置,從核心實例化相關代碼,并調用每個示例的run方法。

注意這個結構很自然地提供了實現單元/功能/集成測試的地方。此外,單是提取通用組件至可復用的庫這一行動就有助于使代碼更容易測試。由于代碼傾向于基于參數,而非依賴硬編碼的試驗細節,為測試創建玩具樣本就要容易很多。以后我會寫一篇文章,深入討論如何為數據科學項目寫測試。

竅門

下面是一些我覺得在實踐中比較有用的簡單竅門。

.gitignore

.gitignore告訴git忽略哪些文件。在開始一個新項目時,應該優先配置.gitignore。因為一旦你提交了蠢物,它就會永遠呆在代碼倉庫之中(除非你采取了一些特殊行動)。

最重要的是除外敏感信息,比如密碼和API密鑰。如果你早早地提交了包含敏感信息的文件,那么它很快就會變成一場噩夢。從當前快照刪除文件無濟于事——你需要從所有之前的提交中清除敏感信息。對自己好一點,避免去學如何做到這一點。

下一步是忽略非常大的數據文件和你不需要追蹤的不重要文件(例如,notebook檢查點,IDE的配置文件,pycache,.pyc,等等)。在上面的例子中,所有輸入輸出文件也應該忽略,因為它們完全可以由代碼本身確定,如果需要,可以重新生成。

頻繁提交

如果你完成了合理數量的工作,提交一次。不要吝嗇,頻繁提交也許能幫助你避免堵塞。

明晰的提交信息

如果你提交得足夠頻繁,那么你的工作大概也會相當集中,這樣提交信息可以寫得更清晰。回溯不想要的改動時,再沒有比根據恰當注解的提交歷史快速找到目標更令人滿足的了。如果你找到的描述是這樣的:“實現了3個新特性,增加了dropout,創建了交叉驗證組件,同時重構了訓練邏輯”,那么你提交得不夠頻繁。

反饋

我在嘗試不同策略的過程中逐漸積累了這些想法。如果你有不同的做法,歡迎留言分享!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 代碼
    +關注

    關注

    30

    文章

    4876

    瀏覽量

    69962
  • 數據科學
    +關注

    關注

    0

    文章

    168

    瀏覽量

    10340

原文標題:如何使用git管理數據科學項目

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    飛凌嵌入式ElfBoard ELF 1板卡-git管理源碼之git安裝和使用

    git是什么?git是一個開源的分布式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理,也是Linus Torvalds為了幫助管理Linux內核開發而開發的一個開放源碼
    發表于 01-14 09:08

    基于單片機控制的滾動試驗臺電氣同步調速系統

    本帖最后由 luna 于 2011-3-8 12:29 編輯 機車車輛滾動試驗臺是對現代機車車輛進行科學試驗的大型試驗裝置,它可以模擬再現機車車輛在鐵路線上運行的各種工況環境,測試
    發表于 03-08 12:05

    使用Git版本控制軟件管理源代碼

    Git 是 Linux Torvalds 為了幫助管理 Linux? 內核開發而開發的一個開放源碼的版本控制軟件。我們可以自己下載這個軟件用于對內核的 hack 分析,或者用來管理自己的軟件開發項目
    發表于 05-16 11:30 ?2214次閱讀

    Pro_Git中文版

    代碼版本管理軟件GIT的詳細使用教程,GIT上手比較慢,不看資料很難上手
    發表于 07-20 17:21 ?0次下載

    Airbnb機器學習和數據科學團隊經驗分享

    Airbnb資深機器學習科學家Shijing Yao、前Airbnb數據科學負責人Qiang Zhu、Airbnb機器學習工程師Phillippe Siclait分享了在Airbnb產品上大規模應用深度學習技術的
    的頭像 發表于 07-07 09:24 ?4031次閱讀

    汽車試驗數據管理系統(TDM系統)

    ,不但增加研發成本,而且還由于數據丟失影響開發進度。因此,如何有效的管理試驗數據就成為企業重要的工作。 由于各企業的研發流程不同,試驗
    發表于 04-10 09:13 ?3660次閱讀

    Git命令的講解和Git數據通信原理的資料概述

    Git是一款開源的分布式版本控制系統(VCS),常用的VCS工具還包括SVN、Mercurial等,他們的使命是對資源變化的進行版本管理控制,對資源容災備份,支持多域協同開發。這里的資源不僅僅是系統
    發表于 06-11 08:00 ?7次下載
    <b class='flag-5'>Git</b>命令的講解和<b class='flag-5'>Git</b><b class='flag-5'>數據</b>通信原理的資料概述

    Git進行Vivado工程管理的教程分享

    作者:貓叔 git有多好用我就不用多說了,可謂是程序員必備技能之一。對于一般的軟件代碼來說,只需把源文件進行git管理即可。但對于FPGA工程師來說,使用git多多少少有些蛋疼,主要有
    的頭像 發表于 11-16 14:59 ?3245次閱讀
    <b class='flag-5'>Git</b>進行Vivado工程<b class='flag-5'>管理</b>的教程分享

    數據科學導論的課程設計及改革綜述

    和中國人民大學等高校開設的具有一定代表性的數據科學導論課程的基礎上,作者結合自己開設的數據科學導論課程以及國家冋名精品在線開放課程建設的經驗
    發表于 05-18 11:32 ?2次下載

    Git權威指南

    Git管理資料,方便大家學習git知識
    發表于 06-29 14:15 ?0次下載

    利用Learn Git Branching輕松學習Git

    Git作為世界上最流行的版本控制系統,可以說是每一位與程序打交道的朋友最值得學習的軟件之一。除了管理自己的項目,如果你對參與開源項目感興趣,那么Git更是聯結Github、Gitlab等知名代碼項目
    的頭像 發表于 09-15 14:53 ?1812次閱讀

    Git的分支管理

    在項目的開發過程中,很多時候都會使用Git托管工具進行項目文件或者代碼的管理,方便團隊成員之間的協作開發。使用Git進行項目管理目前也是越來越受到歡迎,除了
    的頭像 發表于 02-20 14:49 ?1214次閱讀
    <b class='flag-5'>Git</b>的分支<b class='flag-5'>管理</b>

    Git是什么 Git介紹

    git 是什么? Git 誕生于 2005 年,是一款免費、開源、分布式版本控制系統。 直接記錄快照,而非差異比較 Git 和其它版本控制系統的主要差別在于 Git 對待
    的頭像 發表于 07-22 10:50 ?2073次閱讀
    <b class='flag-5'>Git</b>是什么 <b class='flag-5'>Git</b>介紹

    藍牙 | 軟件:Git管理高通的ChipCode項目

    處理卡住了,我們只能從git下手。Git有優秀的項目管理,代碼管理的能力,所以學一學git管理
    的頭像 發表于 01-26 08:29 ?543次閱讀
    藍牙 | 軟件:<b class='flag-5'>Git</b><b class='flag-5'>管理</b>高通的ChipCode項目

    試驗數據采集管理系統的核心就是對試驗規程的嚴格遵循

    ? ? ? 在公路工程項目中,試驗過程管理科學性與合理性直接影響工程質量與進度。傳統的試驗數據管理方法往往依賴人工記錄與手動分析,容易出現
    的頭像 發表于 02-14 09:22 ?186次閱讀
    主站蜘蛛池模板: 色偷偷97 | 香港三级理论在线影院 | 最好看最新的中文字幕1 | 最刺激黄a大片免费网站 | 亚洲综合区图片小说区 | 天天久 | 天天综合网天天综合色不卡 | 国产在播放一区 | 一级片免费在线观看 | 国产高清色视频免费看的网址 | 国产精品久久自在自2021 | 女人牲交一级毛片 | 国产精品久久久久久久9999 | 亚洲免费视频观看 | 成人免费看片视频色多多 | 国产三级a三级三级野外 | 免费超爽视频 | 2021年最热新版天堂资源中文 | 国产无限资源 | 视频一区二区在线观看 | 黄色片链接| 人人干狠狠干 | 国产免费小视频 | 天堂在线.www资源在线观看 | 国产午夜三区视频在线 | 五月丁香六月综合缴清无码 | 激情网站网址 | 四虎国产精品4hu永久 | 全黄毛片 | h在线观看网站 | 伊人精品成人久久综合欧美 | 欧美瑟瑟| 国产资源网| 色月丁香 | 天天爽夜爽免费精品视频 | 亚洲电影在线播放 | 亚洲免费国产 | 播放毛片| 女同性进行性行为视频 | 夜夜五月天 | 你懂的视频在线观看资源 |