Git 分支的原理和應用實戰,看這篇就夠了!

通過這篇文章,相信大家會對git會有一些更深刻的體會。此篇文章先扼要總結了git和分支管理的基本原理(這是去年2月份我在博客上總結的),在這之後,是zhupc老鐵總結的git一個應用分支管理調參的實戰。

1 理解Git的暫存區

理解Git的暫存區(stage 或 index)如下圖所示,左側是工作區(working directory),右側是版本庫(Repository),每次add某個文件時,就會存放在版本庫的stage,commit後才真正的提交到本地的版本庫中,默認git init時,會創建一個master分支,以及一個指向master的指針Head。

如果修改的文件不存放到stage中,就直接commit,修改就不會提交到本地版本庫。

2 分支管理

初始只有一個master分支,HEAD指向master,如下圖所示:

接下來,我們創建一個branch分支,注意創建一個branch分支,僅僅創建一個branch指針,其引用master,並修改HEAD使其指向branch,由此看見創建分支並無任何對文件複製的操作,效率很高。如下圖所示,

接下來,我們在分支上做一些修改,如下所示修改部分再用一個小方框示意出來,此時將branch和HEAD同時指向分支的最新修改。

如何將分支上修改合併到master中? git的操作就是修改master指針指向,指向branch中的修改,HEAD指向master,刪除branch指針。

3 Git分支的實戰:用於調參

Git 作爲一個強大的版本控制工具,無論是從事什麼工作我覺得都應該瞭解掌握。本文分享一個筆者在工作中遇到的問題,並用Git強行解決,減輕了不少的工作量。

從事一下算(tiao)法(can)工作,避免不了嘗試各種參數,各種tricks。此處就會有矛盾,當你有個新想法想加入到你的模型中,但是這個新的想法又會影響你其他超參數的值。比如說:目前使用dropout作爲正則化手段,你的較優參數配置如下:這是caffe中的deploy文件

假設這組參數能夠使得模型達到不錯的效果,此時你又想試試BN的效果如何,此刻你有三種方式去改參數:

1)、直接在源文件裏修改,更改net文件的配置,然後再慢慢調試其他的超參數。然後發現效果不如之前的好,想要改回去,記性不好的你可能懵逼,我上個學習率設置的多少?

2)、直接拷貝一份,然後你又有其他的新trick想加入到模型中,此時你就會拷貝N份

3)、使用Git 來控制,這裏不使用發佈版本的方式,因爲你每次反悔可能都需要回退版本,而我們新的trick 跟我們的其他模型配置都是並行,不是一種串行工作,所以這裏採用 Git中的分支,來管理其他模型配置文件。

首先提交本次記錄,否則的你來回切換分支會導致之前在工作區的內容被清空,或者切換失敗。

首先初始化一個Git 庫:

把配置文件添加到暫存區

提交本次修改 註釋寫爲 dropout model

現在創建一個想要使用BN正則化的模型分支

切換到BN分支,去快樂的調參吧。

跟上次相比,使用BN後,學習率設置爲0.05效果最好,但是還是不如上個模型好

果斷切換到原來的模型

現在以前的配置又回來了

如果你覺得BN沒什麼用,沒有優化的潛力了,那就刪掉它

現在我們分支裏面只有一個主分支了

以上就是Git分支的原理和實戰,如果對您有用,歡迎支持!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章