Git学习笔记

本文详细介绍如何使用Git进行版本控制,从安装配置到基本操作,再到高级功能如分支管理和远程仓库同步等,适合初学者快速上手。

首先推荐下廖雪峰的官方网站,对Git的使用很详细,本笔记就是根据该网站教程学习整理的:

http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

1、分布式版本管理系统,VS SVN

2、Linux下查看git

         git –version

3、安装git

         sudoapt-get install git

4、创建版本仓库

         1)创建目录

         $mkdir learngit

         $cd learngit

         $pwd

         /Users/michael/learngit

         2)初始化

         $git init

         3)基本操作

         $git add<file>

         $git commit

4、查看代码状态和代码变化

         $git status

         $git diff

5、提交时候会出现这样一个小问题:

warming:lf willbe replaced by crlf…

这是由于Linux下和Windows下的换行不一致而产生的警告,Linux下只有换行,而Windows底下包括了回车,具体解决见博客:

http://michael-roshen.iteye.com/blog/1328142

6、查看提交日志:

         $git log

   使用相关参数使得日志输出变得简短一些:

         $git log –pretty=oneline

   这里出现的一大段前缀数字就是版本号,和SVN不同的是,这里的版本号是通过SHA计算出来的,这样才能避免在分布式版本控制中冲突。

7、版本回退(git的版本回退速度非常快,因为Git在内部有一个指向当前版本的HEAD指针,当回退版本时候,就是将HEAD指向回退的那个版本而已,所以Git总有后悔药可以吃…)

         写法一:

         $git log --hard HEAD               当前版本

$ git log --hardHEAD^             上一个版本

$ git log --hardHEAD^^                    上两个版本

写法二:

$ git log --hardHEAD~100      前100个版本

写法三:

$ git log –hard e4195e…           回退到某个版本号的版本(可以不写全,git会自己搜索)

8、查看回退log

        $ git reflog

9、工作区和暂存区的概念

         我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,而gitcommit就是往master分支上提交修改内容,可以这么理解:需要提交修改的文件放在了暂存区,然后一次性提交暂存区所有修改。

         Changenot staged for mommit      修改了

         Untrackedfiles                                     还未添加过的

         Changedto be committed                修改了并放入暂存区了(就差commit)

10、管理修改

         $git diff HEAD – readme.txt            查看该文件的修改情况

         git管理的是修改而不是文件,所以如果还没add时修改的内容在commit的时候不会被提交,只有再次被add时才会加入到修改暂存区。

11、放弃工作区修改

         $git checkout – readme.txt    让这个文件回到最近一次gitcommit或git add时的状态

12、删除文件(可以直接恢复)

         $git rm <file>

13、连接远程库和push远程库:

         1)生成公钥

         2)到远程仓库(github上)添加公钥

         3)创建远程仓库:

                  $ git remote add origin git@github.com:kangaroo007/learngit.git

         4)push代码到远程仓库:

                   $git push –u origin master

         5)如果报错可以先:

                   $git remote rm origin

14、分支管理的意义(引用)

    “分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。”


训练数据保存为deep_convnet_params.pkl,UI使用wxPython编写。卷积神经网络(CNN)是一种专门针对图像、视频等结构化数据设计的深度学习模型,在计算机视觉、语音识别、自然语言处理等多个领域有广泛应用。其核心设计理念源于对生物视觉系统的模拟,主要特点包括局部感知、权重共享、多层级抽象以及空间不变性。 **1. 局部感知与卷积操作** 卷积层是CNN的基本构建块,使用一组可学习的滤波器对输入图像进行扫描。每个滤波器在图像上滑动,以局部区域内的像素值与滤波器权重进行逐元素乘法后求和,生成输出值。这一过程能够捕获图像中的边缘、纹理等局部特征。 **2. 权重共享** 同一滤波器在整个输入图像上保持相同的权重。这显著减少了模型参数数量,增强了泛化能力,并体现了对图像平移不变性的内在假设。 **3. 池化操作** 池化层通常紧随卷积层之后,用于降低数据维度并引入空间不变性。常见方法有最大池化和平均池化,它们可以减少模型对微小位置变化的敏感度,同时保留重要特征。 **4. 多层级抽象** CNN通常包含多个卷积和池化层堆叠在一起。随着网络深度增加,每一层逐渐提取更复杂、更抽象的特征,从底层识别边缘、角点,到高层识别整个对象或场景,使得CNN能够从原始像素数据中自动学习到丰富的表示。 **5. 激活函数与正则化** CNN中使用非线性激活函数来引入非线性表达能力。为防止过拟合,常采用正则化技术,如L2正则化和Dropout,以增强模型的泛化性能。 **6. 应用场景** CNN在诸多领域展现出强大应用价值,包括图像分类、目标检测、语义分割、人脸识别、图像生成、医学影像分析以及自然语言处理等任务。 **7. 发展与演变** CNN的概念起源于20世纪80年代,其影响力在硬件加速和大规模数据集出现后真正显现。经典模型如LeNet-5用于手写数字识别,而AlexNet、VGG、GoogLeNet、ResNet等现代架构推动了CNN技术的快速发展。如今,CNN已成为深度学习图像处理领域的基石,并持续创新。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值