深入学习:Windows下Git入门教程(下)

git-publish:准备补丁修订并将其存储为git标签 厌倦了手动创建补丁系列电子邮件? git-publish准备补丁并将其存储为git标签,以备将来参考。 它适用于单个补丁以及补丁系列。 修订编号是自动处理的。 git工作流没有任何限制,香草git命令和自定义工作流脚本都与git-publish兼容。 电子邮件发送和提取请求已完全集成在一起,因此发布修补程序可以在单个命令中完成。 挂钩脚本在补丁准备期间被调用,因此自定义检查或测试运行可以自动化。 如何安装 配套 软件包可用于: - dnf install git-publish 和 - apt install git-publish 通过 - yum install git-publish 手动安装 您还可以从源代码树运行git-publish(对开发有用)。 假设~/bin在$PATH : $ git clone https://github.com/stefanha/ 立即下载

声明:由于本人对于Git的学习还处于摸索阶段,对有些概念的理解或许只是我断章取义,有曲解误导的地方还请见谅指正!

一、分支

1.1分支的概念。

    对于的分支的理解,我们可以用模块化这个词来解释;在日常工作中,一个项目的开发模式往往是模块化,团队协作式的开发。这样我们项目的进度可以称得上多核并发式的开发了。这种模块化的开发要求我们尽可能的高内聚低耦合以免造成一只胳膊没了整个人都废了的局面。因此在所有的版本控制器对代码进行管理的时候都引入了分支这个概念。那么分支是什么呢?

    分支是相对于主干来说的,或者是相对于主分支来说的,它是用来将特性开发绝缘开来的。我们在创建仓库的时候,系统会默认创建master分支,也就是我们默认的主干分支。当我们开发一个项目的时候,在框架搭建完成后,需要开发一个一个模块的功能的时候,我们往往会创建一个一个的分支来进行分别开发,没跟人都在自己的一亩三分地里劳作,相互没有影响,当某一项功能或者模块开发完成通过测试的时候在整合到主框架上,这样做的好处是,可以避免单个模块的开发工作的缺陷造成整个框架系统无法编译通过,无法正常运转。如果你是一个Android开发人员,我们可以用主线程(UI)线程和子线程来理解,比较类似的是当我们创建一个Activity的时候,系统会默认创建一个主线程,也就是我们的UI线程,如果我们在需要访问网络获取数据的时候(耗时操作),我们一般的做法就是我们会重新开启一个子线程进行远程数据的获取与解析,当我们完成数据读取操作后在对UI线程进行更新,以免耗时操作造成UI线程的阻塞(ANR)。

1.2创建分支与分支合并

    我们每次执行提交的时候,git都会把它们串成一条时间线,这条时间线就是一个分支。经过前一阶段的学习,我们知道,在我们的仓库中只有一个主分支,也就是只有一条时间线,随着我们每一次的提交,master分支的时间想也就越长。当我们需要开发一个新的功能的时候,我们可以新建一个分支的时候(dev)来进行该功能模块的开发工作,Git就会同时新建了一个指针(dev),把HEAD指向dev分支,表示当前分支在dev上。那么对工作区的修改和提交就是在dev分支上了,我们每一次提交后,dev指针就会往前移动一次,不会影响到master分支。当我们在dev分支上的开发工作完成以后,通过测试验证后,再把dev分支与master进行合并。那么如何合并呢?我们可以让master分支指向dev分支(dev分支又指向当前分支下的最后一次提交)的当前提交,也就是把这个dev分支作为master主干分支的一次修改来进行提交,这样就完成了合并。合并完成后我们甚至可以删除被合并的dev分支。

    下面我们来进行实际的命令操作:

1.2.1 创建分支

$ git branch dev

!注意:执行上述命令,没有任何提示!

1.2.2切换分支

$ git checkout dev
Switched to branch 'dev'

!注意:


1.2.3创建并切换分支命令

使用git checkout命令加上-b参数表示创建并切换分支,相当于上述两条命令;

$ git checkout -b dev

1.2.4查看当前分支

$ git branch
* dev
  master
绿色部分为当前分所在的分支。

STAR@STAR-PC ~/learngit (dev)
$ git add test.txt

STAR@STAR-PC ~/learngit (dev)
$ git commit -m "create new branch"
[dev cee7bfc] create new branch
 1 file changed, 2 insertions(+), 1 deletion(-)

STAR@STAR-PC ~/learngit (dev)
$ git commit -m "create new branch"
[dev cee7bfc] create new branch
 1 file changed, 2 insertions(+), 1 deletion(-)
上述代码在dev分之下提交修改。

STAR@STAR-PC ~/learngit (dev)
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)
上述命令是我们在dev分之下条修改后进行的分支切换操作,此时我们查看工作区,则在dev分支下的修改并不存在。此时若想在master看到我们在dev分支下的修改,则需要合并分支。
$ git merge dev
Updating 94bf25d..cee7bfc
Fast-forward
 test.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
上述命令的执行完成了整合,此时查看工作区的文件发现,主分支下的文件已经能够看到之前在dev分支下的修改了。

注意!上述命令执行后打印的提示信息中的“Fast-forward”,告诉我们此次合并为“快进模式”也就是直接让master指针指向dev的当前提交。

1.2.5删除分支

由于之前的内容我们提到过,在分支合并后我们可以删除已经合并的分支,因此我们来删除dev分支,并查看所有分支。

STAR@STAR-PC ~/learngit (master)
$  git branch -d dev
Deleted branch dev (was cee7bfc).


STAR@STAR-PC ~/learngit (master)
$ git branch
* master
提示信息告诉我们dev分支已删除,剩余分支为master,绿色表示当前分支为master

1.3解决分支合并冲突

你看到这个题目的时候或许心里会有疑惑?上述的操作不是很顺利吗?怎么会有冲突呢?

我们回头看看上述分支合并的操作就会发现,我们在合并分支的时候,新建分支dev有改动,而master分支没有提交任何修改,但是如果我们在合并分支的时候,master和dev分支均提交了修改呢?这样一来合并分支会还会一帆风顺吗?我们带着这个问题来进行接下来的操作。

我们首先创建一个分支dev,然后分别在两个分支上提交修改。

STAR@STAR-PC ~/learngit (master)
$ git checkout -b dev2
Switched to a new branch 'dev2'


STAR@STAR-PC ~/learngit (dev2)
$ git add test.txt


STAR@STAR-PC ~/learngit (dev2)
$ git commit -m "create a new brance dev2"
[dev2 046661c] create a new brance dev2
 1 file changed, 2 insertions(+), 1 deletion(-)


STAR@STAR-PC ~/learngit (dev2)
$ git switch master
git: 'switch' is not a git command. See 'git --help'.


STAR@STAR-PC ~/learngit (dev2)
$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)


STAR@STAR-PC ~/learngit (master)
$ git add test.txt


STAR@STAR-PC ~/learngit (master)
$ git commit -m "add a new line for master"
[master 835e78c] add a new line for master
 1 file changed, 2 insertions(+), 1 deletion(-)
合并分支:
$ git merge dev2
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.
根据上述提示信息我们发现,test.txt文件发生冲突,合并失败。我们可以根据git status来查看冲突文件。


$ git status
On branch master
Your branch is ahead of 'origin/master' by 3 commits.
  (use "git push" to publish your local commits)


You have unmerged paths.
  (fix conflicts and run "git commit")


Unmerged paths:
  (use "git add <file>..." to mark resolution)


        both modified:   test.txt


no changes added to commit (use "git add" and/or "git commit -a")
或许我们也可以直接查看test.txt的内容:

<<<<<<< HEAD
add a new line for master。
=======
create a new branch dev2.
>>>>>>> dev2

git用<<<<<<,======,>>>>>>标记出不同分支的内容,我们可以对文件进行修改如下;

add a new line for master。
create a new branch dev2.
并在master进行提交:
STAR@STAR-PC ~/learngit (master|MERGING)
$ git add test.txt


STAR@STAR-PC ~/learngit (master|MERGING)
$ git commit -m "fixed"
[master 51e165e] fixed

提示信息告诉我们问题已经解决。接着我们就可以删除dev2分支了。
$ git branch -d dev2
Deleted branch dev2 (was 046661c).
!注意:我们之前的分至合并操作都是快速模式下执行的,但是在这种模式下删除分支后,会丢失分支信息。因此我们在合并分支的时候也可以采用no-ff方式,如下,有兴趣的朋友可以自己进行测试。
$ git nerge --no-ff -m "merge with no-ff" dev

1.4分支的隐藏与恢复

如果我们在项目的开发过程中,需要暂时搁置当前分支的开发并在其他分之下进行操作,我们可以使用git stash对当前分支进行隐藏。


$ git checkout -b dev3
Switched to a new branch 'dev3'


STAR@STAR-PC ~/learngit (dev3)
$ git add test.txt


STAR@STAR-PC ~/learngit (dev3)
$ git commit -m "use stash"
[dev3 d358fab] use stash
 1 file changed, 2 insertions(+), 1 deletion(-)
查看状态,并执行git stash命令
$ git status
On branch dev3
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)


        modified:   test.txt


no changes added to commit (use "git add" and/or "git commit -a")


STAR@STAR-PC ~/learngit (dev3)
$ git stash
Saved working directory and index state WIP on dev3: d358fab use stash
HEAD is now at d358fab use stash

切换回主分支进行提交修改操作。

$ git status
On branch master
Your branch is ahead of 'origin/master' by 6 commits.
  (use "git push" to publish your local commits)


Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)


        modified:   test.txt


no changes added to commit (use "git add" and/or "git commit -a")


STAR@STAR-PC ~/learngit (master)
$ git add test.txt


STAR@STAR-PC ~/learngit (master)
$ git commit -m "hello"
[master 404a601] hello
 1 file changed, 2 insertions(+), 1 deletion(-)

切换会dev3分支

STAR@STAR-PC ~/learngit (master)
$ git checkout dev3
Switched to branch 'dev3'

切换回分支之后,此时我们需要恢复现场。

首先查看隐藏的现场。


STAR@STAR-PC ~/learngit (dev3)
$ git stash list
stash@{0}: WIP on dev3: d358fab use stash

    恢复现场的方式有两种一种是使用git stash apply [stash@{0}],但是恢复后stash内容并不会删除,我们需要手动执行git stash drop 来删除。

    第二种执行git stash pop,恢复的同时删除stash的内容。


$ git stash pop
On branch dev3
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)


        modified:   test.txt


no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (6696a348f1e160fa3f234dff50eaad0d59e4d264)

dev3分支下完成修改后,执行合并分支的操作。


!注意:如果我们开发完成一个分支,准备切换到主分支进行合并的时候,却发现该分支下的修改已经不需要了,这个时候我们如果要删除该分支我们需要执行git branch -D [分支名]

1.5推送本地分支到远程分支

    一般来说我们都会在本地分支上进行修改和提交,然后与主干分支进行合并,再删除无用分支,因此我们向远程分支进行推送的时候只需要推送主干分支即可。


$ git push -u origin master
Username for 'https://github.com': huangyabin001
Password for 'https://huangyabin001@github.com':
Counting objects: 31, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (29/29), 2.23 KiB | 0 bytes/s, done.
Total 29 (delta 9), reused 0 (delta 0)
To https://github.com/huangyabin001/learngit.git
   1cf2aaa..7b69267  master -> master
Branch master set up to track remote branch master from origin.
   注意如果输入git push origin master则会出现一下问题:

$ git push origin master
fatal: unable to access 'https://github.com/huangyabin001/learngit.git/': Empty

reply from server

二、自定义Git

2.1客户端配置

2.1.1 core.editor

Git默认会调用你的环境变量editor定义的值作为文本编辑器,如果没有定义的话,会调用vi来创建和编辑,我们可以使用core.editor改变默认编辑器。

$ git config --global core.editor emacs

2.1.2 help.autocorrect

该配置只在Git1.6.1及以上版本有效,如果你错打了一条命令,会显示:

$git com tig:'com' is not a git-command.See 'git --help'. Did you mean this?commit

2.2Git的着色

Git能够为输出到你终端的内容着色,以便你可以凭直观的界面进行快速的分析。

Git会按照你的需要自动为大部分的输出加上颜色

$git config --global color.ui true



来源:http://blog.youkuaiyun.com/huangyabin001/article/details/35840591


did-you-mean:模糊匹配列表中的命令(典型安全) 你的意思 ... 在Node.js中模糊匹配命令或关键字列表中的单词,以提供友好的拼写安全的人工提示。 您可以在以下位置使用它: 您的CLI 网络应用程序 网址 等等。 安装 $ npm install did-you-mean 用法 var Matcher = require ( 'did-you-mean' ) ; // Create a matcher with a list of values var m = new Matcher ( 'init install update upgrade' ) ; // Get the closest match m . get ( 'udpate' ) ; // 'update' // Set the threshold (the maximum Levenshtein distance) m . setThreshold ( 立即下载

相关推荐

Polyworks宏脚本开发入门:5分钟搞定环境搭建与基础命令录制

本文详细介绍了Polyworks宏脚本开发的入门指南,包括环境搭建、基础命令录制和核心对象操作。通过5分钟快速启动开发模式,掌握自动化操作流程和脚本调试技巧,帮助工程师高效完成工业测量与三维检测任务。

weixin_29306875的博客 533

git问题之Unmerged paths: (use "git add <file>..." to mark resolution)

1.问题描述 MacBook-Pro:gupaoedu gaoxinfu$ git pull error: Pulling is not possible because you have unmerged files. hint: Fix them up in the work tree, and then use 'git add/rm <file>' hint: as appro...

高新富的博客 3万+

`全网最细!! 入门必看Git教程链接:https://gitee.com/all-about-git`

全网 Git 入门教程 gitee.com。如果显示The requested URL returned error: 403错误,那就表示没有和window本地建立token令牌

qq_37855368的博客 3748

git 查看冲突文件 unmerged paths

git status

软件工程小施同学 的专栏 3987

一文搞定 GitHub SSH Key:生成、配置、好处全攻略

本文详细介绍了如何配置GitHub SSH Key,实现免密安全认证。主要内容包括:SSH协议的四大优势(免密登录、安全性高、稳定省心、支持自动化);Git身份配置步骤;检查本地SSH Key;生成RSA密钥对;添加密钥到SSH代理;复制公钥到GitHub;测试连接。配置完成后,开发者可通过SSH地址克隆仓库,实现push/pull全程免密操作。该方案显著提升Git使用效率,同时保障安全性,是开发者必备技能。

qq_62904883的博客 958

钣金设计高薪进阶:从材料工艺到DFMA降本增效全解析

钣金设计是机械制造领域的核心技术之一,它涉及将金属板材通过切割、折弯、焊接等工艺成型为所需零件。其核心原理在于深刻理解材料特性、制造工艺约束与结构力学,以确保设计在功能、成本与可制造性之间取得最佳平衡。这项技术的价值在于,优秀的钣金设计能直接驱动产品降本增效,通过优化材料利用率、简化装配工序和避免设计缺陷,为企业节省大量模具与生产成本。其应用场景广泛,从机箱机柜、汽车部件到电子设备外壳无处不在。本文将聚焦于实现这一价值的关键路径,深入探讨面向制造与装配的设计(DFMA)原则在钣金领域的实战应用,并剖析如何通

weixin_34301132的博客 391

深入学习:Windows下Git入门教程(上)

一,安装Git:

从0到1,突破自己 5万+

黑马Java第二阶段:JavaWeb(笔记)

黑马Java第二阶段:JavaWeb(笔记)

chen的博客 5654

深入学习:Windows下Git入门教程

原文链接: (上)http://blog.csdn.net/huangyabin001/article/details/35557231 (下)http://blog.csdn.net/huangyabin001/article/details/35840591

Chydison 271

H3C设备VRF配置实战:5步搞定多业务网络隔离(附排错技巧)

本文详细介绍了在H3C设备上配置VRF(虚拟路由转发)实现多业务网络隔离的实战方法。通过五步配置流程,从创建VPN-instance、绑定接口到配置独立路由表,帮助网络工程师在单台设备上构建逻辑隔离的企业级网络,并分享了高级路由配置与常见排错技巧。

gold8的专栏 937

C/C++李峋同款跳动的爱心代码(完整代码)

C++语言实现出李峋同款跳动的爱心的完整代码。

AIGC 10万+

转载-深入学习:Windows下Git入门教程(下)

出处:http://blog.csdn.net/huangyabin001/article/details/35840591声明:由于本人对于Git的学习还处于摸索阶段,对有些概念的理解或许只是我断章取义,有曲解误导的地方还请见谅指正! 一、分支 1.1分支的概念。     对于的分支的理解,我们可以用模块化这个词来解释;在日常工作中,一个项目的开发模式往往是模块化,团队协作式的开发。这样我们项目的

fighting! 276

华为OD新系统机试真题 - 获取大写字母瓷砖拼出独特图案数量

华为OD机试新系统真题【获取大写字母瓷砖拼出独特图案数量】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD新系统四月二十九号机试真题【获取大写字母瓷砖拼出独特图案数量】

qq_45776114的博客 1218

转载-深入学习:Windows下Git入门教程(上)

出处:http://blog.csdn.net/huangyabin001/article/details/35557231一,安装Git: 1.1Linux上安装命令: sudo apt-get install git 1.2在Windows上安装Git: 使用Windows版的msysgit,官方下载地址:http://msysgit.github.io/,点击进入官网,如果官网无法正常下载我这

fighting! 383

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

git for windows快速入门教程

都说git是最好用的版本控制系统,以其独特的分布式版本控制、github的流行和强大的爹Linux系统之父linus将SVN等其它版本控制系统甩开几条街的距离。   然而在我要入坑的时候并没有找到很好的快速入门的git for windows的教程,github上的教学视频讲得太快让初学者跟不上,当然git官网的上的官方文档是很好的,也有中文版,不过得细看看很久,我花了两天的时间踩过很多坑才入门,...

徐丨若木 395

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

git安装及快速入门教程

本文介绍了Git和代码托管平台Gitee的基本使用流程。首先说明了Git在Windows、macOS和Linux系统下的安装方法,并指导用户在Gitee平台注册账号、绑定邮箱和创建仓库。接着讲解了本地Git环境的配置,包括设置用户名邮箱、初始化仓库、连接远程仓库等操作步骤。最后汇总了常用的Git命令,如克隆、提交、推送、分支管理等基础操作,为开发者提供了从环境搭建到代码管理的完整指南。

m0_73073987的博客 1213

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

GIT---看我一步步入门(Windows Git Bash)

0 前言     不同的版本控制工具的比较这里就不介绍了,我的入门是从windows开始的,而且是使用纯命令方式(Git Bash),当然也可以结合TortoiseGit或者msysgit中的GIT Gui工具,这个工具可以通过界面方式来操作管理。     我们要管理项目,首先要建立一个GIT服务器系统,来管理项目版本。但是有的条件有限,我们搞不起服务器,只能借助第三方了,github就是很好

易名 7719

Windows 安装 Git:x64/ARM64 怎么选,找不到 git 怎么排查

Windows 安装 Git 时如何选择 x64/ARM64?本文给出命令识别、PATH、提交身份和第一次提交的排查步骤,同时保留 Git 2.54.0 历史文件及来源,并明确历史版本与当前官方版本的区别。

weixin_61919617的博客 4508

Git入门教程(二、安装Git)

这是本系列教程的第二篇。 恭喜你,已经了解到Git了!现在你已经知道Git是干什么的了吧? 这篇教程就带着大家安装Git(会提供Linux、macOS、Windows的安装方法,非常详细)。 话不多说,进入正题。...

YoungGeeker 440

3分钟快速上手Windows Git:免编译安装与高效配置终极指南

还在为Windows下Git安装复杂、配置繁琐而烦恼吗?想要一个简单快捷的版本控制工具部署方案吗?今天我将为你介绍一个专为Windows用户优化的Git项目——gh_mirrors/git/git,这是一个包含Windows特定补丁的Git分支,让你在3分钟内就能完成安装和基础配置,享受流畅的Git版本控制体验。 ## 为什么选择这个Windows版Git? 这个项目相比官方Git版本有三个显

gitblog_01007的博客 1135

Windows下Git入门教程

一,安装Git:1.1Linux上安装命令:sudo apt-get install git1.2在Windows上安装Git:使用Windows版的msysgit,官方下载地址:http://msysgit.github.io/,点击进入官网,如果官网无法正常下载我这里有当前的最新版,已经上传到CSD...

luo_sen的专栏 553
上一篇: 深入学习:Windows下Git入门教程(上)
下一篇: HTTP协议详解(真的很经典)
SpeedyCoder
博客等级 码龄14年 415粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值