SVN 笔记

【TortoiseSVN】在SVN提交Commit后补充修改log信息的方法 【TortoiseSVN】使用svn propset --revprop -r 100 svn:log 'Your new log.'在SVN提交后补充修改log信息的方法。 阅读详情

作者: 溪水清澈

Tortoise是配合资源管理器用的.

 

svn 命令行客户端程序。

svnversion

显示工作拷贝的状态(用术语来说,就是当前项目的修订版本)。

svnlook直接查看Subversion版本库的工具。

svnadmin建立、调整和修复Subversion版本库的工具。

svndumpfilter过滤Subversion版本库转储数据流的工具。

mod_dav_svn ApacheHTTP服务器的一个插件,使版本库可以通过网络访问。

svnserve一个单独运行的服务器程序,可以作为守护进程或由SSH调用。这是另

一种使版本库可以通过网络访问的方式。

svnsync 一个通过网络增量镜像版本库的程序。版本库历史复制.

 

每更新一项就输出一行信息,使用首字符来报告执行的动作。这些字符的含义是:

 

  A  已添加

  D  已删除

  U  已更新

  C  合并冲突

  G  合并成功

  E  已存在

 

全局选项:

  --username ARG           : 指定用户名称 ARG

  --password ARG           : 指定密码 ARG

  --no-auth-cache          : 不要缓存用户认证令牌

  --non-interactive        : 不要交互提示

  --trust-server-cert      : 不提示的接受未知的

SSL服务器证书(只用于选项 “--non-interactive”)

  --config-dir ARG         : 从目录 ARG 读取用户配置文件

  --config-option ARG      : 以下属格式设置用户配置选项:

                                 FILE:SECTION:OPTION=[VALUE]

     例如:

     servers:global:http-library=serf

 

    • 日志

    -m 或 --message "日志内容"

    一定要用双引号

 

    • svn checkout 远程目录 本地目录

    目录对目录的copy

    列表中的A表示Subversion增加了一些条目到工作拷贝

 

表 1.1. 版本库访问URL

模式访问方法

file:/// 直接版本库访问(本地磁盘)(注意是三个/)

http://通过配置Subversion的Apache服务器的

WebDAV协议

https://与http://相似,但是包括SSL加密。

svn://通过svnserve服务自定义的协议

svn+ssh://与svn://相似,但通过SSH封装。

 

    • svn import 本地目录 远程URL

    把本地目录导入到远程 版本库中,

    但是本地目录不进行版本化.

    如果想版本化, 还需要svn checkout

 

  • svn checkout 远程url 本地目录

本地目录可以不写,

如果不写, 则会把远程的代码库目录名, 当成本地目录.

 

  • svn commit . --username yf -m "commit log"

使用yf用户提前当前目录, 日志为 commit log

 

  • svn add foo

把foo添加到目录树中,

如果foo是一个目录, 会把foo下的所有文件都添加进去,

如果不想添加目录foo下的文件, 使用参数 -N 或 --non-recursive

 

  • svn delete foo
  • svn copy foo bar
  • svn move foo bar
  • svn mkdir dir_a

以上四个命令可以把foo换成 URL 地址, 表示直接操作版本库

只操作版本库, 不在本地创建.

  • svn status 目录或文件

哪些文件被修改了

如果不带目录, 只显示当前目录及子目录下, 哪里被修改了

  • svn status -v verbose

显示当前copy的status, 与本地版本库比较

  • svn status -u //update

显示当前copy的status, 与服务器版本库对比

如果信息有 * 星号, 表示服务器版本较新

预测冲突

  • svn revert

svn revert 文件 -r 版本号

恢复文件到 版本号

  • svn log 展示给你主要信息:每个版本附加在版本上的作者与日期

信息和所有路径修改。

svn log -r 3:5

升序显示日志, 从版本3 - 版本5

svn log -v

显示详细信息

  • svn diff 显示特定修改的行级详细信息。

svn diff -r 4:5

比较R4和R5两个版本

只是比较两个路径, 而非比较同一个对象的不同版本

  • svn diff -c 3

<==> svn diff -r 2:3 与前一个版本比较

显示范围为: 变化的行 + 前后三行

 

  • svn cat 取得在特定版本的某一个文件显示在当前屏幕。

svn cat -r 2 readme.txt

显示R2中的readme.txt

  • svn list 显示一个目录在某一版本存在的文件。

不下载文件, 显示库内容.

注: 此命令是显示服务器上的内容, 而不是本地的.

显示本地, 请使用: dir, ls 等等.

svn list -R

递归显示

  • svn export 版本库URL

导出版本库, 但不创建.svn目录

  • svn cleanup

递归清理工作副本,删除锁,继续未完成操作,等等。

如果svn的工作被意外中断了,

比如死机, 断电 等等,

这个命令会继续执行上次未完成的任务, 并清理任务日志.

 

版本号: 不区分大小写

  1. 数字
  2. HEAD 版本库中最新的(或者是“最年轻的”)版本。

BASE 工作拷贝中一个条目的修订版本号,如果这个版本在本地修改了,则“BASE版本”就是这个条目在本地未修改的版本。

COMMITTED项目最近修改的修订版本,与BASE相同或更早。

PREV一个项目最后修改版本之前的那个版本,技术上可以认为是COMMITTED -1

 

    • svn log -r head:prev

    显示最新版本和上一版的日志

     

    • svn checkout -r {2006-02-17T15:30}

    最接近指定时间的版本

    如果不指定时分秒, 按 0:0:0 算

 

    • svn blame 文件

    此文件中, 第一行都是在哪个版本中添加或修改的.

 

  • 属性名可以是 字母, 数字, 减号, 点号

    • svn propset 属性名 "属性值" (如果需要引号, 一定是双引号)
    • svn propset 属性名 "属性值" -R 目录

    递归的对此目录下所有文件设置属性

    • svn propedit 属性名

    如果提示什么变量没设置, 可以使用 set 变量名=值 来设置

     

    • svn proplist *

    可以列出所有文件的属性名, 只是属性名, 不带值的

    • svn proplist * -v

    名称和值都列出.

 

  • 忽略:

    目录属性名: svn:ignore

    不是正则, * 代表多个

     

    • svn:needs-lock

    把文件变只读,

    当编辑之前, 会要求先锁定文件

    • svn:externals属性

    此属性可以使得在update 某个版本库时, 把别的版本库包含到当前目录下

    例:

    svn propedit svn:externals .(点表示当前目录)

    在弹出的编辑器中输入如下:

    MyR1   https://s.com/svn/r1

    就会把版本库r1 中的数据, 更新到当前目录下的目录MyR1中

     

    当然, 定义了属性以后, 要commit, 别的用户在checkout时, 才会有效

     

    貌似程序实现的不是很好, 建议不要使用.

    • svn:mime-type

    此属性会在浏览器中浏览库中的文件时, 生效,

    浏览器会按这个值来渲染文件

 

  • 关键字:

注: 关键字区分大小写, 直接修改关键字这一行, svn认为文档没有修改

别名和关键字意义相同,

在svn:keywords(区分大小写)在, 别名和正名都可以使用.

在svn:keywords中, 手册说以空格分割关键字,

实际上应该是空白, 包括 空格 \t \n

$Date::              $ 可以限制关键字的最大长度

 

Date: $Date:2013-02-28 14:33:20 +0800 (周四, 2013-02-28) $

LastChangedDate:$LastChangedDate: 2013-02-28 14:33:20 +0800 (周四, 2013-02-28) $

Revision:$Revision: 34 $

LastChangedRevision:$LastChangedRevision: 34 $

Rev: $Rev: 34 $

Author: $Author: hy$

LastChangedBy:$LastChangedBy: hy $

HeadURL: $HeadURL: https://s.com/svn/news/readme.txt$

$URL: https://s.com/svn/news/readme.txt$

Id: $Id: readme.txt31 2013-02-28 06:29:01Z hy $

 

    • svn lock 文件

    锁定文件

    • svn lock 文件 --force

    即使别人已锁定, 也可以获得锁

    • svn status -u

    查看版本库的更新信息, 第六列

    O

    锁定(Other)

    T

    (偷)被窃取

    B

    打破(Broken)

    K

    表示被锁定

    X

    eXternals

    • svn info 文件(* 表示所有文件 )

    显示详细信息

    • svn info URL

    可以显示目前谁锁定了文件

    • svnadmin lslocks 库路径(非URL)

    显示库下所有锁, 可多个

 

  • Rev和Peg

Rev: 实施的修订版本, 表示当前文件在某个版本的内容

Peg: 中文名未知, 表示当前路径在某个版本的样子

举例如下:

在Rev1有个文件叫index.html, 内容为: index at rev1

在Rev2时, 删除了index.html: svn delete index.html

在Rev3时, 我们又添加了一个 index.html, 内容为: index.added at rev3

此时, 如果我们想查找 在 Rev1时, 文件名为index.html的文件内容如何?

svn cat index.html@1  // 定位到 路径在版本1时的对象

结果为: index at rev1

svn cat -r 1 index.html  //定位到当前面对象,

//回溯到版本1时, 当前对象是什么样子

结果为: 报错, 因为当前对象在Rev1时不存在.

 

svn cat-r Rev Path@Peg

意思为: 在Peg版本中, Path路径所表示的对象 在 Rev中 的内容

 

    • 使用协议

    svn --version

    会显示本版本svn可以使用什么协议与服务器通讯

 

    • 密码缓存

    C:\Users\IceWindYoung\AppData\Roaming\Subversion\auth\svn.simple

 

    • 创建分支:

    直接复制原有文件即可, 当然是svn copy 而非操作系统的复制

    如:

    svn copy trunk branch\new-trunk

    或

    svn https://s.com/svn/repo1/trunk https://s.com/svn/repo1/branch/new-trunk

    复制并不是真实的复制文件, 而是增量复制.

    Subversion并没有内在的分支概念—只有拷贝,

    当你拷贝一个目录,这个结果目录就是一个“分支”,

    只是因为你给了它这样一个含义而已。

    • 合并分支

    svn merge -c M,N 源URL 工作copy

    把 源URL 从 版本M到N的变化 合并到 工作copy中

    • 在版本控制术语中,这种在分支之间拷贝修改的行为叫做搬运修改。
    • svn merge 合并时会时会注意到两个文件有没有共同的祖先,

    如果有, 才进行行比较, 然后合并内容,

    但如果加上参数: --ignore-ancestry 则直接按路径比较,

 

    • 迭代恢复(svn revert --recursive)
    • svn log --stop-on-copy

    查找日志, 到 分支建立时, 因为copy就是建分支

 

    • 分支合并到主干:
    1. 在分支中, 查看分支建立版本, 以前分支当前版本

    svn log -v --stop-on-copy

    1. 目录转到主干中: cd 主干目录
    2. svn merge -r 分支建立版本:分支当前版本 分支的URL

    把分支从建立到当前的变化加入到主干.

    • 全并分支中 新的内容
    1. 在主干中, 查看上一次合并的版本, 定为 LastMergeRev
    2. 在主干目录中, 执行:

    svn merge -r LastMergeRev:Head 分支URL

     

    • 反向合并

    只要在指定版本时, 左版本大于右版本即可.

    svn merge -r 30:29 版本库URL

    会把修改变到29

 

    • 找回删除的项目
    1. 先找到 所要找回的对象 所在的版本
    2. svn copy -r 版本 对象URL 对象本地文件名

 

    • svn switch 分支URL

    和svn update的区别

    svn switch 把当前目录的 URL改为 分支URL, 并更新

    svn update 只是更新

 

    • 标签: 最终发布的版本, 版本库在某一个时刻的快照

    建立方式同 建立分支, 也是copy, 注意日志说明

    标签的产生过程与建立分支是一样的?

    是的,实际上在Subversion中标签与分支没有区别,都是普通的目录,

    通过copy命令得到,

    与分支一样,一个目录之所以是标签只是人们决定这样使用它,

    只要没有人提交这个目录,它永远是一个快照,

    但如果人们开始提交,它就变成了分支

    • 可以copy本地目录到URL库中, URL库路径的最后一级目录可以自动创建,

    前面的目录需要已存在.

    • 如果你在trunk做了半天工作, 但是突然发现, 你也许应该在分支中做这些工作?

    如果保存已做的工作, 并切换到分支中?

    1. svn copy https://s.com/svn/zhut/trunk https://s.com/svn/zhut/branch/newbranch
    2. svn switch https://s.com/svn/zhut/branch/newbranch

    已在trunk上做的工作, 会被保存.

 

    • 供方分支

    使用目录 /vendor

    1. 建立供方drop
    2. 建立供方标签
    3. 复制标签到trunk
    4. 当供方更新时,
    5. 重建供方drop
    6. 把供方标签到供方drop合并到trunk

    svn merge https://...供方drop https://...供方标签 当前copy

    • 管理版本库

    一库多项目, 缺点是我没修改, 但Rev依然在增加.

    一库一项目,

    混合(把相关项目组合成一个库)

    • 目录布局

    什么样的都可以, 对SVN来说, 目录就是目录, 没有别的意义.

    注意: 听取一个项目参与者的意见.

 

    • 后端

    后端就是版本库的储存方式, 包括BDB数据库和 FSFS文件

 

    • svnlook youngest /path/to/repo

    显示最大版本号.

    • svnlook author 作者
    • svnlook changed 库路径(非URL)

    显示版本库路径的改变

    • svnlook diff

 

    • svnadmin setlog myrepos newlog.txt -r Rev

    在服务器端设置日志

    • svnadmin lstxns myrepos

    列出未提交的事务

    • svnadmin rmtxns myrepo

    删除未提交的事务

    • svnadmin dump 版本库本地路径 >> 版本库导出储存文件
    • svnadmin load 版本库本地路径(要由svnadmin create初始化) < 转储文件
    • 或者:

    svnadmin dump 路径 | svnadmin load 新路径

    • 多文件转储

    svnadmin dump myrepos -r 0:1000 > dumpfile1

    svnadmin dump myrepos -r 1001:2000 --incremental > dumpfile2

    svnadmin dump myrepos -r 2001:3000 --incremental > dumpfile3

    • 转储过滤, 就是版本库删除

    svndumpfilter include 要留下的路径前缀( 应该是相对于根的 相对路径 )

    exclude 不包含的路径前缀

    • 热备份

    svnadmin hotcopy /path/to/repos /path/to/repos-backup

 

    • 建立服务器:

    windows进程

    sc create SvnServiceName binpath= "svnserve --service"

    • 配置文件, svnserve.conf

    password-db 控制用户的整体权限

    authz-db 控制用户对某个目录的权限

    realm 登录时的提示信息

    如果用户想访问某个版本库中的某个对象, 必须满足所有 授权 规则

 

    • svn 和 apache

    失败,  因为在apache上, LoadModule失败,

    所以手册内容, 无法理解.

    • 创建日志, 未测试.

    CustomLog logs/svn_logfile "%t %u %{SVN-ACTION}e" env=SVN-ACTION

 

    • 配置文件:

    Win7: C:\Users\IceWindYoung\AppData\Roaming\Subversion

    此目录在Win7中用常量 %APPDATA% 表示

    如果对配置文件不满, 把这个目录删掉,

    再随便运行个svn命令即可, 如: svn --version

     

    • 配置文件例子

    [HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion\Servers\global]

    "#http-proxy-host"=""

    "#http-proxy-port"=""

    "#http-proxy-username"=""

    "#http-proxy-password"=""

    "#http-proxy-exceptions"=""

    "#http-timeout"="0"

    "#http-compression"="yes"

    "#neon-debug-mask"=""

    "#ssl-authority-files"=""

    "#ssl-trust-default-ca"=""

    "#ssl-client-cert-file"=""

    "#ssl-client-cert-password"=""

    [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\auth]

    "#store-passwords"="yes"

    "#store-auth-creds"="yes"

    [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\helpers]

    "#editor-cmd"="notepad"

    "#diff-cmd"=""

    "#diff3-cmd"=""

    "#diff3-has-program-arg"=""

    [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\tunnels]

    [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany]

    "#global-ignores"="*.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store"

    "#log-encoding"=""

    "#use-commit-times"=""

    "#no-unlock"=""

    "#enable-auto-props"=""    //yes | no

    [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\auto-props]

    *.txt = svn:keywords=Id  //给所以有txt文件添加关键字属性

    • servers文件

    [groups]

    组名 = 带通配符的主机名   //表示此主机名的访问权限由相应的组名来控制

    [组名]

    访问权限

    [global]

    未在groups段中匹配的主机由此处设置

     

     

    • 汉化包位置

    D:\Program Files\Subversion\share\locale

【100条svn命令】 100条svn命令 阅读详情

相关推荐

SVN多版本开发笔记一

这里来做一下关于SVN多版本开发的笔记(一)一.前言   首先,这里借鉴很多大佬的知识,这本身也是笔记,想要更好学习可以看看这个博客http://blog.youkuaiyun.com/mycwq/article/details/51793847在我们游戏开发中,不免需要一种东西,叫多版本开发,为啥需要它呢,假设我们做出了一个比较稳定没什么bug的版本,是15.0版本,现在我们要开发15.2版本,结果一不小心...

文学少年 505

SVN常用命令

SVN常用命令 1、将文件checkout到本地目录svn checkout path(path是服务器上的目录)简写:svn co2、往版本库中添加新的文件svn add file3、将改动的文件提交到版本库svn commit -m “LogMessage” [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)简写:svn ci4、加锁/解锁sv...

webcenterol 896

SVN学习笔记11 -- Eclipse 中 SVN的相关操作 -- checkout and update

在此提及一下,笔记9中需要插件的连接我已经进行更新,需要的小伙伴可以去下载哈!我上传的,不要积分!         好,接下来我就做回项目组成员喽! 1.checkout 我们打开另一个eclipse 工作空间(模拟不同的组员) 然后点File -> Import -> SVN -> 从SVN 检出项目 ’ next -> 组员第一次检出,也需要告诉它去哪里检出,所以也需

boboidea 812

svn 常用命令

Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据。这些数据放置在一个中央资料档案库(repository) 中。这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。

TU商的博客 1万+

Frida+Objection保姆级教程:从环境搭建到实战Hook(含Wallbreaker插件使用)

本文提供了一份从零开始的Frida与Objection移动安全动态分析实战指南。详细讲解了Python环境配置、Frida-Server部署、Objection核心命令使用以及Wallbreaker插件安装与应用。通过实战案例演示如何Hook网络请求(如HttpURLConnection和OkHttp3),帮助安全研究人员快速掌握应用运行时行为分析与漏洞挖掘技能。

weixin_28318011的博客 102

从原理到实践:详解双目散斑结构光的生成与优化

本文深入解析了双目散斑结构光的生成原理与优化实践,详细介绍了散斑结构光的抗干扰性、空间编码技术及其在三维视觉中的应用。通过对比不同生成方法和技术路线,提供了参数调优指南和工程实现细节,帮助开发者掌握高效、精准的散斑生成技术。

weixin_42521856的博客 591

SVN笔记

111

tiebanshao的博客 246

AT91SAM9260搭建LINUX操作系统

一、 编写目的 2 二、 系统搭建 2 1. 下载相关软件包 2 2. Bootstrap编译 3 3. U-BOOT编译 5 4. LINUX编译 7 5. 通过U-BOOT的TFTP命令从TFTP服务器下载系统镜像 9 6. 文件系统制作 10 7. 挂载NFS作为根文件系统 10 三、 总结 14 一、编写目的 本文档用于记录AT91SAM9260 LINUX学

lshiceman的专栏 7412

SVN 安装、配置学习笔记

花几天学了下SVN,用XMind作的笔记。http://share.xmind.net/zahuifan/installation-configuration-svn-1/ ...

weixin_33970449的博客 83

ML307A模组通过MQTT协议接入OneNET平台的AT指令全解析

本文详细解析了ML307A模组通过MQTT协议接入OneNET平台的完整AT指令流程。从平台侧的产品创建、设备添加,到核心难点连接密钥的计算方法,再到模组侧的基础网络附着、MQTT连接配置、数据收发及调试排错,提供了手把手的实战指南,帮助开发者快速实现物联网设备上云。

weixin_29240711的博客 494

PostgreSQL 在 Windows操作系统 无管理员权限情况下的部署详解

但是因为使用默认5432端口,我们修改了端口,所以连接报错,需要修改local连接信息,右键-属性修改相应信息即可,方式同上。(也别太任意吧,个人习惯工具放在不包含中文及特殊字符的目录,另外目录名尽量简短,避免不必要的麻烦)图中我解压到了自己的tools\postgresql18。1)如果想修改默认的5432端口,找到初始化目录中的(上面的tools\postgresql18\。此处替换成你的实际目录\tools\postgresql18\pgsql\pgAdmin 4\runtime。

dong_zhi2328的博客 1117

SVN学习笔记

1.在D:\Program Files\VisualSVN Server 下创建webAPP目录。效果:相同更新版号的两个人,第一个人写完提交正常,第二个人提交失败,需要更新工作副本。1.新建的项目文件夹右键“版本库浏览器”,url 填写svn服务器地址。在空白处鼠标右键 更新至版本,根据日志信息选择要回退的状态。在实际项目开发中,如果两个人同时修改了某个文件夹。1.合理分配开发模块,每个人不同模块。客户端软件:Tortoisesvn。1.客户端文件已忽略,不需要上传。第一查更新数据到本地,

cainiaojunshi的博客 559

svn学习笔记(一)

svn常用命令学习笔记

飞翔的小鸟 2703

9.13华为OD机试真题 新系统 - 手机桌面整理 (Java/Py/C/C++/Js/Go)

华为OD机试真题 新系统【手机桌面整理】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【 手机桌面整理】多语言题解。

qq_45776114的博客 638

RAG效果调优清单(命中率提升3倍)

本文提出了一套工程可落地的RAG(检索增强生成)模型组合方案,强调通过最优组合实现效果、成本和扩展性的平衡。核心架构包括Embedding模型、向量数据库检索、Rerank模型和LLM生成四个环节,推荐了四种具体组合方案:本地最优性价比(bge+reranker+Qwen 7B)、效果优先(bge-large+reranker+14B模型)、高并发(轻量模型+vLLM)和中英混合(多语言模型)。文章指出Embedding决定检索下限,Rerank提升准确率上限,LLM影响最终体验,并提供了不同场景的优化策略

刘一说的IT专栏 523

SVN笔记-SVN介绍

SVN笔记-SVN介绍

YIYIYI 910

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

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

Svn笔记

(1)(Checkout)检出操作:① 链接到 SVN 服务器端 ② 更新服务端数据到本地注意:Checkout 只在第一次链接时操作一次,以后如果进行更新操作请使用 Update(更新指令)在实际项目开发中,我们可能会同时开发多个项目,那么我们如何进行多项目监管呢?Apache-http://localhost 或(ip地址)访问到 htdocs,目录下相关文件(监管)SVN→svn://localhost或(ip地址)访问到相关数据仓库(如Shop仓库)3)svn解决版本冲突问题,更新服务器端到本地,

weixin_74771654的博客 1289

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

深度学习工具包 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")

01.SVN入门笔记——SVN 简介

版本控制(Revision control),最初来源于工程设计领域,是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。Subversion 就是一款实现版本控制的工具软件,通常也称为版本控制器,简称 SVN。 Subversion 是 Apache 软件基金会组织下的一个项目。

java阳旭的博客 551

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SVN笔记-SVN安装

SVN笔记-SVN安装

YIYIYI 1511

SVN 学习笔记

概述 SVN 全称 SubVersion,是一个开放源代码的版本控制系统,它的特点是操作简单,支持跨平台操作,支持版本回退 SVN 属于 C/S 结构软件,分客户端和服务端: 服务端软件:VisualSVN 客户端软件:TortoiseSVN SVN 的工作原理如下,SVN 服务器会把代码整合记录每一次的改动历史,开发人员通过以下基本命令便能与 SVN 服务器完成交互: Checkout(检出):当你手上没有源代码的时候,你需要从 SVN 服务器 checkout 一份 Update (更新):当你已

低吟不作语的博客 520

SVN使用笔记

一、基本了解: 1.SVN(CVS)版本控制策略:A员工checkout公司的版本然后进行修改然后进行提交,提交前进行update,update服务器最新的代码后进行commit提交。当我们修改完本地版本后,进行提交,这时候如果你的代码跟服务器的不一样,也就是有人已经commit了,那么svn就会报出“outofdate”,我们需要先更新本地的代码,让本地的代...

bailinshu8989的博客 181
上一篇: PHP正则表达式e模式
下一篇: 数字日期转换为中文日期
风兮清扬
博客等级 码龄17年 4粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值