精华内容
参与话题
问答
  • 在阅读基于深度卷积神经网络的图像识别、分类或检测的文献时经常看到“patch”,不是很能理解,后来就总结了一下。 通过阅读,“patch”似乎是CNN输入图像的其中一小块,但它究竟是什么呢?当使用CNN解决问题时,...

    在阅读基于深度卷积神经网络的图像识别、分类或检测的文献时经常看到“patch”,不是很能理解,后来就总结了一下。

     

    通过阅读,“patch”似乎是CNN输入图像的其中一小块,但它究竟是什么呢?当使用CNN解决问题时,“patch”什么时候开始起作用?为什么我们需要“patch”? “patch”和内核(即特征检测器)之间有什么关系?

    在CNN学习训练过程中,不是一次来处理一整张图片,而是先将图片划分为多个小的块,内核 kernel (或过滤器或特征检测器)每次只查看图像的一个块,这一个小块就称为 patch,然后过滤器移动到图像的另一个patch,以此类推。

    当将CNN过滤器应用到图像时,它会一次查看一个 patch 。

    CNN内核/过滤器一次只处理一个 patch,而不是整个图像。这是因为我们希望过滤器处理图像的小块以便检测特征(边缘等)。这也有一个很好的正则化属性,因为我们估计的参数数量较少,而且这些参数必须在每个图像的许多区域以及所有其他训练图像的许多区域都是“好”的。

    所以 patch 就是内核 kernel 的输入。这时内核的大小便是 patch 的大小。

    如图,主动脉弓和心脏,绿色部分相同,而黄色部分不同。传统的CNN算法,区分效果不佳。在 Multi-Instance Multi-Stage Deep Learning for Medical Image Recognition 这篇文章中,作者针对这种场景提出了解决方法。

    这样训练出的网络,就会对有区分度的patch敏感,而对无区分度的无感。

     

    一个CNN层生成一个中间表示。该表示被传递到下一层。如果下一层是CNN,则应用完全相同的“patch”概念,并以完全相同的方式进行计算,即使中间表示不是您或我可以识别为“图像”的东西。

    展开全文
  • Linux下生成patch和打patch

    万次阅读 2013-12-13 10:58:32
    通过diff工具生成补丁, patch工具打上补丁. 在使用diff之前, 你需要保留一份未修改过的源码, 然后在其它地方修改源码的一份拷贝. diff对比这两份源码生成patch. 修改过的源码必须保留原来的文件名, 例如, 如果你...

    通过diff工具生成补丁, patch工具打上补丁.

    在使用diff之前, 你需要保留一份未修改过的源码, 然后在其它地方修改源码的一份拷贝. diff对比这两份源码生成patch. 修改过的源码必须保留原来的文件名, 例如, 如果你修改源码中的a.c文件, 那么, 修改后的文件还是名为a.c, 在修改之前你可以复制a.c为a.orig.c进行备份.

    1.为单个文件生成补丁

    $ diff -up linux-2.6.28.8/net/sunrpc/svc.orig.c linux-2.6.28.8/net/sunrpc/svc.c
    这条命令会产生类似如下的输出, 你将它重定向到一个文件中, 这个文件就是patch.
    diff -up linux-2.6.28.8/net/sunrpc/svc.orig.c 2009-03-17 08:50:04.000000000 +0800
    +++ linux-2.6.28.8/net/sunrpc/svc.c 2009-03-30 19:18:41.859375000 +0800
    @@ -1050,11 +1050,11 @@ svc_process(struct svc_rqst *rqstp)
    参数详解:
    -u 显示有差异行的前后几行(上下文), 默认是前后各3行, 这样, patch中带有更多的信息.
    -p 显示代码所在的c函数的信息.

    2.为多个文件生成补丁

    $ diff -uprN linux-2.6.28.8.orig/net/sunrpc/ linux-2.6.28.8/net/sunrpc/
    这条命令对比了linux-2.6.28.8.orig/net/sunrpc/和linux-2.6.28.8/net/sunrpc/两个目录下的所有源码差异.
    参数详解:
    -r 递归地对比一个目录和它的所有子目录(即整个目录树).
    -N 如果某个文件缺少了, 就当作是空文件来对比. 如果不使用本选项, 当diff发现旧代码或者新代码缺少文件时, 只简单的提示缺少文件. 如果使用本选项, 会将新添加的文件全新打印出来作为新增的部分.

    3.打补丁

    生成的补丁中, 路径信息包含了你的Linux源码根目录的名称, 但其他人的源码根目录可能是其它名字, 所以, 打补丁时, 要进入你的Linux源码根目录, 并且告诉patch工具, 请忽略补丁中的路径的第一级目录(参数-p1).
    $ patch -p1 < patch1.diff
    diff命令必须在整个Linux源码的根目录的上一级目录中执行.

    4. 示例

    给修改过的内核生成patch,然后用生成的patch给未修改过的内核打补丁
    其中,目录linux-2.6.31.3为未修改过的内核,目录linux-2.6.31.3_1为修改过的内核
    $ diff -uparN linux-2.6.31.3 linux-2.6.31.3_1/ > mypatch
    $ cd linux-2.6.31.3
    $ patch -p1 < mypatch

     

    展开全文
  • 如何打Patch

    千次阅读 2018-10-17 11:02:47
    在团队开发的过程中,经常需要生成patch,或者打上别人提供的patch,那么一般情况是如何操作的呢。 首先生成patch需要有两个工程,一个修改前的A工程,一个修改后的B工程。 使用linux命令diff就可以生成patch了。...

    在团队开发的过程中,经常需要生成patch,或者打上别人提供的patch,那么一般情况是如何操作的呢。
    首先生成patch需要有两个工程,一个修改前的A工程,一个修改后的B工程。

    使用linux命令diff就可以生成patch了。格式如下:

    diff -Naur path/to/A_Project path/to/B_Project > Project.patch

    -N 选项确保补丁文件将正确地处理已经创建或删除文件的情况。
    -a 将所有文件都当作文本文件处理。
    -u 输出每个修改前后的3行,也可以用-u5等指定输出更多上下文。
    -r 递归。设置后diff会将两个不同版本源代码目录中的所有对应文件全部都进行一次比较,包括子目录文件。

    生成patch以后,在修改前A工程根目录下使用patch命令打上patch。

    $ cd path/to/A_Project
    $ patch -p1 < Project.patch
        -p Num 忽略几层文件夹
    

    为了解释 -p 参数,需要看看如下patch文件片段:

    --- old/modules/pcitable       Mon Sep 27 11:03:56 1999                                          +++ new/modules/pcitable       Tue Dec 19 20:05:41 2000
    

    如果使用参数 -p0,那就表示从当前目录找一个叫做old的文件夹,再在它下面寻找 modules/pcitable 文件来执行patch操作。
    而如果使用参数 -p1,那就表示忽略第一层目录(即不管old),从当前目录寻找 modules的文件夹,再在它下面找pcitable

    如果要取消补丁做出的更改,恢复旧版本,在A工程的根目录下执行以下命令,A工程就会恢复成没有打patch的样子:

    $ patch -RE -p0 < Project.patch

    由Git管理的工程处理patch的方法:

    • 【生成patch】

    分支master 上是没修改前的,分支patch 上是修改以后的打patch的。

    1. 先切换到 patch分支
      git checkout patch

    2. 生成patch
      git format-patch -M master
      会生成一个文件名如:0002-Release-version-1.4.6.patch 的patch文件

    • 【合并patch】

    拿到patch以后,执行下面的命令:

    git am 0002-Release-version-1.4.6.patch
    如果不想直接commit,那么可以用下面这个命令打patch:

    patch -p1 < 0002-Release-version-1.4.6.patch
    然后手动commit 。

    作者:cch___
    来源:CSDN
    原文:https://blog.csdn.net/cch___/article/details/53405450?utm_source=copy
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • patch 命令用法详解

    万次阅读 2010-08-23 00:33:00
    patch,是打补丁的命令,有很多用法,见帮助#man patch patch -p0 (“p”指的是路径,后面的数字表示去掉路径的第几部分。"0",表示不去掉,为全路径) patch -p1 (“p”后面的数字"1",表示去掉前...

    patch,是打补丁的命令,有很多用法,见帮助#man patch

    patch -p0       (“p”指的是路径,后面的数字表示去掉路径的第几部分。"0",表示不去掉,为全路径)

    patch -p1       (“p”后面的数字"1",表示去掉前第一个路径)

    fetch http://people.freebsd.org/~delphij/misc/patch-bge-releng62

    fetch http://people.freebsd.org/~delphij/misc/patch-bce-watchdog-rewrite

    cd /sys/dev/bge

    fetch ...

    patch -p0 < ...

    fetch http://people.freebsd.org/~delphij/misc/patch-tcp_auto_buf-20061212-RELENG_6.diff

    patch -p < patch-tcp_auto_buf-20061212-RELENG_6.diff

    也可以把文件中的目录全改成系统已在的目录如/usr/src/sys.....

    注意:

    1,确认目录

    然后确认目录,如不在默认目录下,就写下要打补丁的当前绝对目录。如/usr/src/sys/dev/bge/if_bce.c

    2,P的使用

    可以使用不带数字的参数。

    patch 后的软件安装

     

    telnetd服务器的问题及补丁

    在当前FreeBSD所有版本中,也就是FreeBSD 5.0、FreeBSD 4.3、FreeBSD 4.2、FreeBSD 4.1.1、FreeBSD 4.1、FreeBSD 4.0、FreeBSD 3.x、FreeBSD 2.x的版本,其telnetd守护进程中存在一个致命的缓冲区溢出漏洞,该问题是由于telnetd在处理telnet协议选项的函数中没有进行有效的 边界检查,当使用某些选项('AYT')时,可能发生缓冲区溢出。这会导致远程root级别的安全威胁。

    因此,如果一定要使用telnet服务的话,必须为服务器打上最新的patch,该patch可以从以下链接获得:

    (注:通常有两个版本的telnetd服务器,有crypto及无crypto的版本,因此 需要判断主机使用的是哪种版本的telnetd,这通常可以通过察看src文件来判断,比如# ls /usr/src/crypto/telnet/telnetd,如果不存在,则说明使用的是无crypto的版本了,在判别清楚之后再分别下载相关补丁 文件)

    crypto版本补丁:

    ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-01:49/telnetd-crypto.patch

    ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-01:49/telnetd-crypto.patch.asc

    patch方法:

    # cd /usr/src/

    # patch -p < /path/to/patch

    # cd /usr/src/secure/libexec/telnetd

    # make depend && make all install

    无crypto版本补丁:

    ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-01:49/telnetd.patch

    ftp://ftp.freebsd.org/pub/FreeBSD/CERT/patches/SA-01:49/telnetd.patch.asc

    patch方法:

    # cd /usr/src/

    # patch -p < /path/to/patch

    # cd /usr/src/libexec/telnetd

    # make depend && make all install

    例子来源http://toby.bokee.com/

    文件:isp1161-2.6.12.patch(在/root下)

    由于patch文件的首行已经指明了路径,所以根据当前所在的目录,加不同的参数使用patch命令:

    1:如果当前的目录是和linux-2.6.12的同级目录:

    [root@kcn-110mw]#patch -p0 </root/isp1161-2.6.12.patch

    2:如果当前的目录为 linux-2.6.12/:

    [root@kcn-110mw]#patch -p1 </root/isp1161-2.6.12.patch

    3:如果当前的目录为 linux-2.6.12/drivers/:

    [root@kcn-110mw]#patch -p2 </root/isp1161-2.6.12.pathc

    0,1,2,是指略去的patch文件中的前几级目录。

    ln 命令的使用

    这是linux中一个非常重要的命令。它的功能是为某一个文件在另外一个位置建立一个不同的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件。

    当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。

    例如:ln -s /bin/less /usr/local/bin/less

    -s 是代号(symbolic)的意思。

    这里有两点要注意:

    第一,ln命令会保持每一处链接文件的同步性。也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化。

     

    patch附带有一个很好的帮助,其中罗列了很多选项,但是99%的时间只要两个选项就能满足我们的需要:

      patch -p1 < [patchfile]

      patch -R < [patchfile] (used to undo a patch)

      -p1选项代表patchfile中文件名左边目录的层数,顶层目录在不同的机器上有所 不同。要使用这个选项,就要把你的patch放在要被打补丁的目录下,然后在这个目录中运行path -p1 < [patchfile]。来自Linux内核patch的一个简短的引用可以这样实现:

      diff -u --recursive --new-file v2.1.118/linux/mm/swapfile.c linux/mm/swapfile. c--- v2.1.118/linux/mm/swapfile.c Wed Aug 26 11:37:45 1998 +++ linux/mm/swapfile.c Wed Aug 26 16:01:57 1998 @@ -489,7 +489,7 @@

      int swap_header_version;

      int lock_map_size = PAGE_SIZE;

      int nr_good_pages = 0; - char tmp_lock_map = 0; + unsigned long tmp_lock_map = 0;

      应用来自本段中使用-p1开关拷贝的patch可以有效地减短patch定位的路 径;patch会查找当前目录下一个名为/mm的子目录,接着应该会在这儿发现swapfile.c文件,然后等待打补丁。在这个过程中,以破折号 (“-”号,译者注)开始的行会被一个以加号(“+”号,译者注)开始的行代替。一个典型的patch会包含对多个文件的更新,每个部分中都由对两个版本 的文件运行diff -u命令的输出结果组成。

      patch在操作时把自己的输出结果显示在屏幕上,但是这种输出通常都滚屏太快,来不及观看。原来准备patch的文件名为*.orig,新的patch文件会覆盖这个初始文件名。

    打补丁的问题

      使用不同版本的patch问题来源可能不同,所有的版本在网络上都是可用的。Larry Wall近年来已经不再做很多工作来更新patch了,这可能是由于他最后发行的一个版本在大部分情况下都能正常运行。最近几年以来,一直是GNU项目的 FSF程序员发行新版本的patch。他们首先修订有问题的patch,但是我最近一直使用没有问题的2.5版本(这是Debian2.0的发行版本 号)。过去,我的2.1版本也一直运行的很好。当前的GNU patch的版本可以从GNU FTP站点上获取,然而大部分人都只使用他们Linux发行版中所提供的版本。

      让我们假定你已经对一个目录下的源程序文件进行了patch修补工作,但是patch并 没有清晰地发挥作用。这可能会偶然发生,在打补丁的过程中会显示错误信息,其中带有行号,说明哪一个文件出现了问题。有时错误是很明显的,例如缺少了分 号,这种错误可以不费多大力气就能改正。另外一种可能是从 patch部分删除了产生问题的部分,但是这样根据所涉及到的文件的不同可能会正常工作,也可能不能正常工作了。

      另外一种常见的错位为:假设你有一个未使用tar打包的内核源程序文件,在/linux /arch/下浏览各个子目录时你会发现各种机器体系结构子目录,例如alpah、sparc等等。如果你和大多数Linux用户一样,使用的是 Intel的处理器(或者是Intel系列),你可以决定删除这些目录,这些目录对于编译你特殊的内核并不需要,只是白白占用了磁盘空间。一段时间之后发 行了一个新的内核patch,此时试图进行patch操作,当它发现不能找到自己打补丁需要的Alpha或者PPC文件,就会停顿下来。幸运的是 patch在这些地方允许用户参与,它会询问"Skip this patch?"回答"y",patch就可以按照正确的路径继续执行。也许你需要回答这个问题很多次,因此允许自己不需要的目录保留在磁盘上是一种很好的 方法。

    给内核打补丁的技巧

      很多Linux用户使用patch都主要是给内核源程序打补丁,因此有一些技巧可以使 用。可能最简单的方法是使用shell脚本给内核打补丁,这可以在内核源程序树中的/scripts子目录中找到。这种方便的、编写良好的脚本是由 Nick Holloway在1995年编写的;两年以后,Adam Sulmicki增加了多种压缩格式的支持,包括*.bz、*.bz2、compress、gzip和无格式文本(也就是已经解压的patch)。这个脚 本假定在你使用新版本的patch时,你的内核源程序是在/usr/src/linux目录中。这些缺省值可以通过这种格式的命令行开关覆盖:patch -kernel [sourcedir [patchdir] ]。如果任何一部分的patch失败,对内核打补丁的过程都会失败,但是如果patch清晰地起作用,它就会调用find,这会删除所有的patch留下 的*.orig文件。

      如果你准备查看命令的输出,或者可能你希望保留*.orig文件直到你确定打过补丁的源 程序编译已经通过,按照我的经验,直接运行patch(正如前面介绍的一样,patch位于内核源程序的最高目录)是很可靠的。为了避免对patch进行 解压,在使用之前,可以使用这样一个技巧:

      gzip -cd patchXX.gz | patch -p1

      或者

      bzip2 -dc patchXX.bz2 | patch -p1

      在使用patch之后,可以使用find程序来检测被拒绝的文件:

      find . -name *.rej

      第一次使用这个命令,语法可能有些不清楚。点号(“.”)说明find应该查找当前目录 并递规查找当前目录之下的所有子目录。记住,点号前后都应该有一个空格。通配符"*"号前面的反斜线把星号转义出来,以免shell会搞混,星号是有其它 意义的。如果find找到了任何的*.rej文件,它就会把文件名打印到屏幕上。如果没有任何输出find就退出了,那么就差不多能确定patch正确发 挥作用了。

      find的另外一个工作是删除*.orig文件:

      find . -name *.orig -print0 | xargs -0r rm -f

      这个命令敲起来相当麻烦,可以使用一个新的shell别名来代替这个命令。在你的~/.bashrc文件中类似这样的一行:

      alias findorig 'find . -name *.orig -print0 | xargs -0r rm -f'

      可以允许你只输入findorig就可以调用前面的命令。如果别名命令的定义中包含空格,那么就必须使用单引号。为了不用先退出再重新登陆就可以使用一个新的别名,可以在命令行中敲如~/.bashrc。第三,软链接是可以跨分区的,但是硬链接只能在同一分区内。  

    如果你用ls察看一个目录时,发现有的文件或文件夹的颜色和别的不一样,蓝色的,那就是一个用ln命令生成的文件,用ls -l命令去察看,就可以看到显示的link的路径了。第二,ln 的链接又软链接和硬链接两种。软链接就是ln -s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

    展开全文
  • 有关HTTP的PATCH提交方式

    万次阅读 2018-12-02 18:57:46
    一、关于PATCH Http的【RFC2616】原本定义用于上传数据的方法只有POST和PUT,但是考虑到两者的不足,就增加了PATCH方法。 用PATCH方法,默认是以x-www-form-urlencoded的contentType来发送信息,并且信息内容是...
  • patch命令

    千次阅读 2019-01-04 00:10:49
    patch命令用于为特定软件包打补丁,diff命令可以生成补丁文件 2、参数选项 Usage: patch [OPTION]... [ORIGFILE [PATCHFILE]] Input options: -p NUM --strip=NUM Strip NUM leading components from file names...
  • LINUX 的patch 制作,及打patch

    千次阅读 2018-06-28 09:44:05
    1,如何制作补丁patch文件 patch文件也叫补丁,就是一个文本文档,这个文档包含了在两个不同版本的源代码树之间的变化。 补丁是通过diff应用程序来创建的。为了正确地打上一个补丁,你需要知道这个补丁是从哪个...
  • 如何使用patch命令打补丁

    万次阅读 2018-11-09 10:01:15
    有时候因为条件限制,我们不能使用git仓库进行...这时,使用patch是一个不错的办法。 确保你的服务器上安装了patch命令。如果没有安装,在联网状态下安装一下也就几分钟的事。 在你本地生成patch文件。在你的git仓...
  • linux patch 命令小结

    万次阅读 多人点赞 2012-04-26 20:25:41
    说到patch命令,就不得不提到diff命令,也就是制作patch的必要工具。diff命令,在制作patch文件的时候,基本上只需要使用到diff -Nau 这个参数,如果比较的是文件夹,还要加上-r参数,所以一般直接使用Naur参数。 ...
  • patch的方法

    千次阅读 2015-11-26 15:24:50
    如果我们现在有一份源码,另外还有一份基于上一版本的patch, 所谓patch即补丁,为了实现某一功能或修改某些bug而生成的。 1>先来看看patch的语法,这里以patch一块的内容为例 diff --git a/minui/minui.h b/minui/...
  • patch命令用法

    万次阅读 2017-07-02 20:20:33
    作为程序员,了解diff和patch命令是非常必要的。比如说发现某个项目有bug,而自己又没有提交权限,此时最合适的解决方法就是用diff命令做一个补丁发给组长。组长看到补丁后会立刻明白你的意图。 有人说直接传一个...
  • Git patch

    千次阅读 2012-05-28 16:22:01
    patchgit-format-patch x..y x y 是哈希值,从x到y依次打patch ...如果只是生成一个commit的patch,可以用git-format-patch -1 commit 如果想从历史头开始commit 用 git-format
  • git patch相关命令

    2019-07-09 09:50:39
    目录: 1.基本介绍 2.命令总结 3.解决冲突 ...一....a.... 打patch就是将patch文件中对代码的修改,应用到源代码,从而把对代码的修改应用到code中。 Linux中diff和patch两个命令可以生成pat...
  • git patch操作

    2016-05-17 16:19:33
    获取从FIRSST_COMMIT开始(不包含此次提交)到目前HEAD为止改动的所有文件 git diff --name-only $FIRST_COMMIT | xargs -i cp --parents {} ../patch/ 2>/dev/null ...git format-patch -M maste
  • git patch的使用

    2019-08-22 11:37:56
    1 使用git format-patch生成所需要的patch: 当前分支所有超前master的提交: git format-patch -M master 某次提交以后的所有patch: git format-patch 4e16 --4e16指的是commit名 从根到指定提交的所有patch: git ...
  • git patch 的生成和应用

    2019-02-12 11:35:17
    平时我们在使用git 管理项目的时候,会遇到这样一种情况,那就是客户使用git 生成patch 给到我们,那我们就需要把客户给到patch 打入到我们的project ,基于这样一个场景,我把git 如何生成patch 和如何打入patch 做...
  • Git Patch使用: 生成,导入,解决冲突

    千次阅读 2015-05-20 14:48:15
    1. Git Patch git patch包括2中: 标准diff 和git format-patch   2. 生成patch 2.1 git diff     生成标准patch 最简单, 但是很多信息没有 git diff &gt; my.diff     2.2 git format-patch   ...
  • git patch

    2020-04-09 14:25:02
    在程序员的日常开发与合作过程中,对于code的生成patch和打patch(应用patch)成为经常需要做的事情。 什么是patch?简单来讲,patch中存储的是你对代码的修改 什么是生成patch?生成patch就是记录你对代码的修改并将其...
  • git patch 多分支

    2013-04-08 10:09:32
    GitPatch功能  2012-05-26 09:34:40| 分类:版本控制 | 标签:|字号大中小 订阅 本文整理编辑自: http://www.cnblogs.com/y041039/articles/2411600.html http://yuxu971
  • git patch和传统补丁

    2017-03-28 15:15:14
    参考:http://blog.csdn.net/sunnylgz/article/details/7660638 参考:http://www.cnblogs.com/domainfei/articles/2433504.html http://blog.sina.com.cn/s/blog_5372b1a301015y0n.html 英文原文地址:...

空空如也

1 2 3 4 5 ... 20
收藏数 197,907
精华内容 79,162
关键字:

patch