前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git 分支的原理和应用实战,看这篇就够了!

Git 分支的原理和应用实战,看这篇就够了!

作者头像
double
发布2018-12-12 16:01:17
1.2K0
发布2018-12-12 16:01:17
举报
文章被收录于专栏:算法channel算法channel

通过这篇文章,相信大家会对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分支的原理和实战,如果对您有用,欢迎支持!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档