Korn Shell(ksh)学习

K-shell算法的简单实现(python) k-shell的基本思想:K-shell 方法递归地剥离网络中度数等于 k 的节点,我们让k值为1,不断地让节点的度数值与其相比较,如果等于那么我们就将该节点从网络中剥离出去,然后继续重复比较和剥离的过程,直到度数值都不等于k,这就意味着我们需要将k增大,然后再 重复比较剥离和k值增大的过程。简单实现:# ks代表了一个简单的网络,里面由三个节点‘1’,‘2’,‘4’ ks={'1':['3','... 阅读详情

 

Korn Shell(ksh)学习

Korn Shell

1. 语法

特殊的文件

/etc/profile  在登录时首先自动执行。

$HOME/.profile  在登录时第二个自动执行。

$ENV  在创建一个新的KShell 时指定要读的一个文件。

文件名元字符

*  匹配有零或零个以上字符的字符串

?  匹配任何单个字符

[abc…]  匹配括号内任何一个字符,也可用连字符指定一个范围(例如,a-z,A-Z,0-9 )

[!abc…]  匹配任何不包括在括号内的字符

 

?(pattern)  匹配模式的零个或一个实例

*(pattern)   匹配指定模式的零个或多个实例

+(pattern)  匹配指定模式的一个或多个实例

@(pattern)  只匹配指定模式的一个实例

!(pattern)  匹配任何不匹配模式的字符串

/n  匹配与(…) 中的第n 个子模式匹配的文本。

~  当前用户的主目录

~name  用户name 的主目录

 

这个模式pattern 可能是由分隔符“| ”或“&”分隔的模式的序列,

例:pr !(*.o|core) | lp

引用

;  命令分隔符

&  后台执行

( )  命令分组

|  管道

<> &  重定向符号

* ? [ ] ~ + - @ !  文件名元字符

“ “  中间的字符会逐字引用,除了`` 替换命令和$ 替换变量.

‘’  中间的所有字符都会逐字引用

/  在其后的字符会按其原来的意义逐字采用. 如在”” 中使用 /”,/`,/$

   /a 警告,/b 退格,/f 换页,/n 换行,/r 回车,/ 制表符,/v 垂直制表符,

/nnn 八进制值,/xnn 十六进制值,/’ 单引号,/” 双引号,// 反斜线,

``  命令的替换

$  变量的替换

命令形式

Cmd &  在后台执行

Cmd1;cmd2  命令序列,依次执行

{cmd1;cmd2;}  将命令做为一组来执行

(cmd1;cmd2)  在子shell 中,将命令做为一组执行

Cmd1|cmd2  管道; 将cmd1 的输出作为cmd2 的输入

Cmd1 `cmd2`  命令替换; 用cmd2 的输出作为cmd1 的参数

Cmd1$(cmd2)  命令替换,可以嵌套

Cmd$((expression))  运算替换。用表达式结果作为参数

Cmd1&&cmd2  逻辑与。如果cmd1 成功才执行cmd2

Cmd1||cmd2  逻辑或。如果cmd1 成功则不会执行cmd2

重定向形式

文件描述符:

0         标准输入  stdin  默认为键盘

1         标准输出  stdout

2         标准错误  stderr

 

Cmd > file  将cmd 的结果输出到file( 覆盖)

Cmd >> file  将cmd 的结果输出到file( 追加)

Cmd < file  从file 中获取cmd 的输入

Cmd << text  将shell 脚本的内容(直到遇见一个和text 一样的标记为止)作为cmd 的输入

Cmd <> file  在标准输入上打开文件以便读写

 

Cmd >&n  将输出发送到文件描述符n 。ll >&1

Cmd m>&n  将本来输出的m 中的内容转发到n 中。Ll 3>&2

Cmd >&-  关闭标准输出

Cmd <&n  获取输入

Cmd m<&n

Cmd <&-  关闭标准输入

在文件描述符和一个重定向符号间不允许有空格。

 

Cmd 2>file  将标准错误发到file 中

Cmd > file 2>&1  将标准错误和标准输出都发到file

Cmd > f1 2>f2  将标准输出发到f1, 标准错误发到f2

Cmd | tee files  将输出发送到标准输出和files 中

Cmd 2>&1 | tee files  将输出和错误同时发到标准输出和files 中

2. 变量

变量替换

下列表达式中不允许使用空格。冒号是可选的,如果用冒号那么变量必须是非空的并设置了初始值。

Var=value…  将变量var 设为value

${var}  使用变量var 的值; 如果变量和其后面的文本是分开的则可以不加大括号。

${var:-value}  如果变量var 已设置则使用它,否则使用值value

${var:=value}  如果变量var 已设置则使用它,否则使用值value 并将value 赋给变量var

${var:+value}  如果变量var 已设置则使用value ,否则什么也不使用

 

例:echo ${u-$d};echo ${tmp-`date`} 如果没设tmp, 则执行date;

内置变量

$#  命令行参数的个数

$?  上一条命令执行后返回的值

$$  当前进程的进程号(PID), 通常用于在shell 脚本中创建临时文件的名称

$0  第一个参数即命令名

$n  命令行上的第n 个参数

$*  将命令行上所有参数作为一个字符串

$@  命令行上所有参数,但每个参数都被引号引起来

 

LINENO  脚本或函数内正在执行的命令的行号

OLDPWD  前一个工作目录(由CD 设置)

PPID   当前SHELL 的父进程的进程号

PWD    当前工作目录(由CD 设置)

RANDOM[=n]  每次引用时产生一个随机数,如果给定n 则以整数n 开始

SECONDS 这个整型变量的值是指从这个shell 会话启动算起所过去的秒数。但它更有用的是用脚本中的计时。

例:start=$SECONDS

    read answer

    finish=$SECONDS

TMOUT   如果设置了该变量,则在没有输入的情况下经过TMOUT 变量所指定的秒数后,shell 退出。值为0 时无效。

CDPATH

允许用户使用简单文件名作为CD 的参数,从而快速改变目录。设置方法与PATH 类似,通常在启动文件中设置。如果CD 的参数是一个绝对路径,则不会查询CDPATH.

例:CDPATH=:/u1/nr:/u1/progs:

    export CDPATH

    cd nr

    就会进到nr 中去。

    注意:变量必须大写,定义后必须导出.

数组

Kshell 支持一维数组,最多支持1024 个元素。第一个元素为0。

Set –A name value0 value1 …

声明数组,指定的值就成为name 的元素。

 

${name[i]}  i 为0 至1023 的值,可以是表达式。返回数组元素i

${name}  返回数组元素0

${name[*]},${name[@]}  返回所有元素

下标[*] 和[@] 都可以提取整个数组的内容。但当它们在引号中使用时其行为是不同的。使用@ 可生成一个数组,这个数组是原始数组的副本,而使用* ,则生成的仅仅是具有单一元素的数组( 或者是一个普通变量) 。

例:set -A a "${names[*]}"

    set -A b "${names[@]}" 

    set|head -5

    a[0]='alex helen jenny scott'

    b[0]=alex

    b[1]=helen

    b[2]=jenny

    b[3]=scott

${#name[*]}  返回数组元素个数

运算符

Kshell 使用C 语言中的运算符。

+ 加;-  减;! 逻辑非;~ 按进制取反;* 乘;/ 除;% 求余;<< 左移;>> 右移;<= 小于等于;>=  大于等于;< 小于;

> 大于;== 相等;!= 不等;&& 逻辑与;||  逻辑或;

3. 内置命令

#   注释后面的一行

 

Break [n]  从for while select until 循环中退出或从n 次循环中退出

 

Case value in

     Pattern1) cmds1;;

     Pattern2) cmds2;;

     …

     …

Esac

类似于select case. 例:

Case $1 in

   No|yea) response=1

break;;

   -[tT]) table=TRUE;;

   *)  echo “unknown option”;exit 1;;

Esac

 

Continue [n]  在for while select until 循环中跳过余下的命令,继续下一次循环( 或跳过n 次循环)

 

Eval args  args 是一行包含shell 变量的代码.eval 首先进行变量扩展,并且运行由此产生的命令。在shell 变量包括了重定向符号,别名或其他变量时是有用的。

例:

For option

Do

   Case “$option” in

   Save) out=’ > $newfile’;;

   Show) out=’ | more’;;

Esac

Done

Eval sort $file $out

 

Exit [n]  退出脚本,退出状态为n.

 

Export [name=[value]…]

定义全局变量,让其它shell 脚本也可以使用。无参数时输出当前定义的全局变量。

 

For x [in list]

Do

   Commands

Done

使变量x( 在可选的值列表中) 执行commands ,省略时假定为”$@” 位置参数

例:

For item in `cat program_list`

Do

   Grep –c “$item.[co]” chap*

Done

 

Function name{commands;}  定义一个函数

 

If condition1

Then commands1

[elif condition2

Then commands2]

…

…

[else commands3]

Fi

条件执行语句。

 

Let expressions  执行一个或多个表达式。表达式中的变量前不必有$. 如果表达式中包含了空格或其他特殊字符,则必须引起来。

例:let “I = I + 1” 或 let i=i+1

 

Read [var1[?string]] [var2 …]  从标准输入读入一行给相应的变量,并把剩余的单词给最后一个变量。String 为相应的提示信息. 无参时只等待一次输入。

 

Readonly [var1[=value] var2[=value] …]  设置只读变量, 无参时显示所有只读变量

 

Return [n]  用于一个函数里面返回状态

 

repeat word

do

    commands

done

指定一个命令序列执行的次数。

例:

repeat 3

do

echo "bye"

done

 

Select x [in list]

Do

   Commands

Done

显示一列按list 中顺序编号的菜单项。让用户键入行号选择或按return 重新显示。

例:

Ps3=”select thd item number:”

Select event in format page view exit

Do

   Case “event” in

      Format) nroff $file | lp;;

      Page) pr $file | lp;;

      View) more $file;;

      Exit) exit 0;;

      *)    echo “invalid selection”;;

   Esac

Done

输出为:

1.     format

2.     page

3.     view

4.     exit

select the item number:

 

set [options arg1 arg2 …]  无参时输出所有已知变量的值。

 

Shift [n]  交换位置参数(如将$2 变为$1 ). 如果给出n, 则向左移动n 个位置。通常用于在while 循环中迭代命令行参数。N 可以是一个整数表达式。

 

Sleep [n]  睡眠n 秒钟

 

Test condition 或[ condition ]  判断条件,为真返回0, 否则返回非0.

文件:

-a filename         如果该文件存在而为真

-d filename         如果该文件存在且为一个目录,则为真

-f filename         如果该文件存在且为一个常规文件,则为真

-L filename         如果该文件存在且为一个符号链接,为真

-r filename         如果该文件存在且用户对其有读取权限,真

-s filename         如果该文件存在且包含信息( 大于0 字节) ,真

-w filename         如果该文件存在且对其有写入权,真

-x filename         如果该文件存在且对其有执行权,真

File1 -nt file2     如果file1 存在且在file2 后修改则值为真( 指修改时间)

File1 -ot file2     如果file1 存在且在file2 前修改则值为真( 指修改时间)

字符串:

string          如果string 不为空字符串则值为真

-n string       如果string 字符长度大于0 则值为真

-z string       如果string 字符长度等于0 则值为真

string1=sting2      如果string1 等于string2 则值为真

string1!=string2        如果string1 不等于string2 则值为真

string2 可以是通配符模式。

整数比较:

-gt 大于;-ge 大于或等于;-eq 等于;-ne 不等于; -le 小于或等于; -lt 小于

组合:

! condition                         如果condition 为假则为真

condition1 –a condition2           如果两个条件都为真则为真           

condition1 –o condition2           如果两个条件有一个为真则为真

 

trap [[commands] signals]  如果接收到任何的信号signals 则执行命令commands. 如果完全忽略commands 则会重新设置由默认行为处理指定的信号。

例:

Trap “” 2 ; 忽略信号2 (中断,通常是ctrl+c )

Trap 2 ; 恢复中断2

Trap “rm –f $tmp;exit” 0 1 2 15 ; 当shell 程序退出,用户退出,按ctrl+c 或执行kill 时删除$tmp.

 

Typeset [options] [var [var]…] 设置变量属性

-u 将变量值中所有字母全部转换成大写

-l 将变量值中所有字母全部转换成小写

-i 将变量值设为整数类型.-ix x 为相应的进制,表示时为x# 变量值,可用于进制转换。

    例:typeset -i2 vv  vv=2    echo $vv    2#10

    typeset -i 相当于integer

-L width 在width 宽度之内左对齐

-R width 在width 宽度之内右对齐,前面空位用空格填充

-Z width 在width 宽度之内右对齐,变量如果是数字,则前面空位用零填充

如果忽略width, 将使用赋给这个变量的第一个值的宽度。

-x 设置一个变量全局。typeset -x 相当于 export

-r 设置一个变量具有只读属性,在设置的同时或之前,要先给这些变量赋值。

例:typeset -r  PATH FPATH=/usr/local/funcs

typeset -r 相当于 readonly

不带参数的typeset 可以列出变量和变量的属性。查看指定的变量属性可用type|grep day

使用带有某一选项的typeset 来看看哪一个变量具有特定的属性:typeset -z

 

Unset var  删除一个变量,将它置为空

 

Until condition

Do

   Commands

Done

执行命令command 直到满足条件condition.

 

While condition

Do

   Commands

Done

如果满足条件condition 则执行commands

 

 

 

oracle与ksh(Korn Shell) 汗~近几天在fedora下安装oracle数据库装了N遍才安装成功 貌似是因为忽略了oracle 与 ksh 密切联系导致的。 因为当我在.bash_profile上加上这一段代码之后安装过程才没有出错(我的用户名是hang) if [ $USER = "hang" ] 阅读详情

相关推荐

1、探索Korn Shell编程:从基础到实践

本文深入介绍了Korn Shell(ksh)编程的基础知识与实践技巧,适合系统管理员和用户提升日常工作效率。内容涵盖Shell的基本概念、脚本编写、环境变量设置、正则表达式的使用、引用与扩展机制等核心主题,并结合实例帮助读者更好地理解和应用。通过学习,读者可以掌握创建自动化脚本的能力,并深入了解Korn Shell在UNIX系统中的强大功能。

pea55的博客 98

kshell 语法入门

1.语法 特殊的文件 /etc/profile 在登录时首先自动执行。 $HOME/.profile 在登录时第二个自动执行。 $ENV 在创建一个新的KShell时指定要读的一个文件。 文件名元字符 * 匹配有零或零个以上字符的字符串 ? 匹配任何单个字符 [abc…] 匹配括号内任何一个字符,也可用连字符指定一个范围(例如,a-z,A-Z,0-...

weixin_34055910的博客 1284

掌握Korn Shell编程:自动化管理的利器

本文是一本关于Korn Shell编程的书籍第一章的读后感和总结。作者介绍了Korn Shell(ksh)的优越性以及它在UNIX社区中的标准化地位,强调了学习ksh对于系统管理员的重要性。书中不仅仅提供理论知识,还强调了实用性和实际操作,通过大量的示例帮助读者提高脚本编写能力,从而自动化日常任务,提高工作效率。此外,作者还为读者提供了学习ksh的环境假设和约定,包括对shell环境的基本了解、文件和目录权限的使用、环境变量的设置等。

weixin_35045970的博客 376

(python编程)k-shell的实现

实现k-shell代码 def kshell(graph): importance_dict = {} ks = 1 while graph.nodes(): temp = [] node_degrees_dict = {} for i in G.degree(): node_degrees_dict[i[0]]=i[1] kks = min(node_degrees_dict.values.

蓝砂石的博客 4156

深入浅出Korn Shell编程

本文将详细介绍《Korn Shell 编程示例》一书的核心内容,包括Shell环境的介绍、进程控制、变量使用、正则表达式、引用规则、流程控制、数据处理、信息传递、文件与目录操作等多个方面,为读者提供从基础到高级的编程知识和技能。

weixin_35045970的博客 955

精通Unix KSH脚本编程与自动化实战

说到shell变量,很多人第一反应是“不就是var=value嘛”,但真正写出健壮脚本的人才知道,变量管理其实是shell编程中最容易踩坑的部分之一😵。函数是模块化的基石 🏗️。写得好,代码复用率翻倍!

weixin_35751412的博客 1035

ksh学习

要学习ksh,最好的方法莫过于man ksh,这样才能系统的彻底的了解ksh。以下是我学习ksh的总结:1. Definitions  (请耐心的看懂这一小节,这是其它小节的基础)  1) metacharacter: is one of the following characters:  ; & (  ) |  NEWLINE SPACE TAB 2) blank:     is a TA

jjhpp2003的专栏 3592

k-shell分解算法

K-shell 分解方法给出了节点重要性的一种粗粒化的划分。 其基本思想如下,假设边缘节点的 K-shell值为 1,然后往内一层层进入网络的核心,先去除网络 中度值等于 1 的所有节点以及连边。 若剩下的节点里面,仍有度值等于 1 的节点,则重复上述操作,即去除这些节点和连边,直至所有节点的度值都大于 1,把这些去除的节点的 K-shell 值记为 1,也就是说这些节点均处于 ks 值为 1 的层。 然后依次去除度值小于或等于k 的节点及连边(k 为整数,k≥2),直到所有的节点都有对应的 ks 值为止。

Korn Shell(ksh)和Bash之间的区别

Bash is very popular Linux and Unix shell used system administrators. Even most of the users do not know that they are using bash shell because of it is provided by default in the operating system. Th...

cunjiu9486的博客 2033

K shell基础

K shell 精简教程,立马上手,让你发现k shell 如此简单

PointNet/PointNet++模型调参实战:如何用PyTorch让你的点云分割精度再涨5个点?

本文深入探讨了PointNet/PointNet++模型在点云分割中的调参技巧,通过PyTorch实现精度提升5个点的实战方法。重点分析了点云密度自适应策略、感受野与细节保留的平衡,以及训练加速与稳定性技巧,适用于电力巡检、自动驾驶等场景的激光点云数据处理。

weixin_30836759的博客 477

Linux中ksh的功能描述,学习Linux中ksh的用法

熟悉Linux的朋友肯定都知道bash,它是Linux默认的命令行解释程序,熟悉Solaris的也应该知道csh,但是csh用起来比较费劲,于是乎产生了Korn Shell (http://www.kornshell.com),ksh综合了csh的强大功能和bash的易用性,作为一名忠实的Linuxer,你不得不把这一强大的工具牢牢掌握!关于shell的用法及shell编程方面的资料很多,但是专门...

weixin_31542739的博客 830

Stata: 空间面板数据模型及Stata实现

  作者:游万海 (福州大学) Stata 连享会: 知乎 | 简书 | 码云 | 优快云   来源:Golgher 和 Voss (2016)   1. 背景介绍 由于面板数据模型所具有的众多优点 (刻画个体异质性,减弱模型共线性和增加自由度等),其被广泛应用于实证计量中。在 「 Stata: 面板数据模型-一文读懂」 文中,我们已对面板数据模型进行了介绍。 然而,当研究样本涉及到多个...

Stata连享会 7万+

Korn Shell(简称ksh)

xx

onlyForCloud的专栏 707

S型速度曲线进阶:基于Sin²(x)的PLC平滑运动控制实践(以伺服/步进系统为例)

本文深入探讨了基于Sin²(x)的S型速度曲线在PLC平滑运动控制中的实践应用,特别针对伺服/步进系统。通过对比传统梯形曲线和七段S曲线,详细展示了Sin²(x)曲线在加速度连续性、计算效率和参数自适应性方面的优势,并结合博图平台的具体实现技巧和实战案例,为精密运动控制提供了优化方案。

weixin_28718793的博客 242

linux基线检查、基线加固、安全漏扫、系统漏洞、centos7、文尾部附脚本

等保三级-CentOS Linux 7合规基线检查 风险分类:系统-等保三级-CentOS Linux 7合规基线检查 检测项说明: CentOS Linux 7合规基线检查,对标中国等保2.0第三级等级保护基本要求部分检查项目,仅供参考 检查项目 : 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换 加固建议: 1、执行`cat /etc/shadow | awk -F: '($2 == "" ) { print $1}' `, 查看空密码账户并处理; 2、

swindy博客 5622

Bourne Shell C Shell Korn Shell POSIX Shell

基本上shell分两大类:  一:图形界面shell(Graphical User Interface shell 即 GUI shell)  例如:应用最为广泛的 Windows Explorer (微软的windows系列制作系统),还有也包括广为人知的 Linux shel

Cottage驿站 1049

Mac上安装虚拟机搭载window系统

用Mac的都知道,很多window用的软件是Mac版本没有的。平时有的还得要求去用那些软件,有几种方式可供大家选择: 1.再买个window本; 2.装双系统; 3.装虚拟机,搭载window系统。 我比较推荐第3条,这样可以在Mac本上做到双开,一边开着mac一边开着window,还能做到同时处理文件,不至于重新启动操作系统,下边是具体实现步骤,其中有几个需要下载的,建议在网速好的时候完...

Coder_Mumu的博客 1万+

KSH 语法

<br />Ksh Scripting<br /><br /><br /> --------------------------------------------------------------------------------<br /><br /><br /> Contents<br /><br /> Principle of Script<br /> Variables<br /> Branching<br /> Looping<br /> Commandline Argumen

thmono的学习笔记 8995

Infiniband互连网络概述

一、Infiniband是什么? InfiniBand(简称IB)是一种工业标准规范,它定义了一种输入/输出架构,用于计算节点、通信基础设施设备、存储和嵌入式系统的互连。操作系统可以是Linux、Windows或ESXI。 IB网络一共是五层,从第一天起,IB就被设计为提供一个端到端的解决方案,改善和加速从物理层到上层的所有协议层。 IB协议于2000年由IBTA(InfiniBand Trade Association)提出,其规定了一...

weixin_41687819的博客 5229

《Swin-Unet: 类Unet的纯Transformer架构用于医学图像分割》学习笔记

近年来,卷积神经网络(CNN)在医学图像分析领域取得了重要进展。尤其是基于U形架构和跳跃连接的深度神经网络广泛应用于各种医学图像任务。然而,尽管CNN表现优异,但由于卷积操作的局部性,其难以很好地学习全局和长距离语义信息的交互。在本文中,我们提出了Swin-Unet,一种用于医学图像分割的类Unet纯Transformer模型。被切分为Token的图像块输入到基于Transformer的U形编码器-解码器架构中,通过跳跃连接实现局部和全局语义特征的学习。

学无止境。 5547

oracle卸载ksh,oracle与ksh(Korn Shell) | 学步园

汗~近几天在fedora下安装oracle数据库装了N遍才安装成功貌似是因为忽略了oracle 与 ksh 密切联系导致的。因为当我在.bash_profile上加上这一段代码之后安装过程才没有出错(我的用户名是hang)if [ $USER = "hang" ]; thenif [ $SHELL = "/bin/ksh" ]; thenulimit -p 16384ulimit -n 65536...

weixin_39985286的博客 366

uniapp [全端兼容] - 实现内网使用天地图离线地图,详解项目加载天地图的离线地图服务器部署与使用教程示例源码,Uniapp如何实现天地图的离线加载部署在内网访问(兼容H5、微信小程序、App)

uniapp天地图如何离线访问,无需网络调用天地图API,天地图离线地图,天地图——内网使用离线地图,uniapp中加载天地图的离线地图,uniAPP实现天地图离线访问,在内网中无法直接使用外网天地图资源怎么办,在uni-app中加载地图 -使用天地图的瓦片数据。UNIAPP天地图离线怎么使用,内网部署天地图,天地图离线瓦片,部分瓦片数据,天地图如何离线,下载天地图离线服务,并用Uniapp+天地图离线部署,天地图私有化部署,实现离线加载天地图,Java+uniapp天地图离线开发,uniapp项目中无网络

🏆 前端领域优质创作者 4904

转 关于shell脚本中#!/bin/bash and #!/bin/ksh 的说明

1.在文件里面输入一系列命令,可以直接执行吗? 可以。作者认为,这时调用的是当前用户默认使用的shell。 如果其中一个命令有错,后面的命令还是会继续执行下去的 如果说使用了”&&” ,如果前面的命令执行错误,,后面的命令不执行。 2.加#/bin/bash目的是什么,既然不加也可以? 这些不是注释符,而是说明下面的脚本是在什么shell下面运...

weixin_33705053的博客 912

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Korn Shell 脚本入门

Korn Shell 脚本入门 所有的 UNIX® 用户都应该了解如何使用 Korn Shell 脚本。通过编写 Shell 脚本,可以让您实现许多任务的自动化,并可以为您节约大量的时间。初看起来,它似乎令人生畏,但只要遵循正确的指导,您就可以熟练地使用它。本文将指导您编写自己的 Korn Shell 脚本。  评论: Kurt A. Riley, IT

robertzhouxh的专栏 4315

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

Linux命令:ksh

Linux命令:ksh

闲余知道 239

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: Linux下常用压缩格式的压缩与解压方法
下一篇: The serializable class XXX does not declare a static final serialVersionUID field of type long
jjaing
博客等级 码龄23年 3粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值