深入理解LILO

PanGu STM32MP1开发环境搭建 STM32MP1开发环境搭建相关文章1 - 前期准备2 - 交叉工具链2.1 - 安装qt交叉工具链2.2 - 设置环境变量3 - 了解STM32MP1启动3.1 - 启动介质:从什么存储器启动3.2 - 启动流程欢迎加群 相关文章 [PanGu STM32MP1资料下载](https://blog.youkuaiyun.com/whxinluyao/article/details/102755135) 1... 阅读详情

深入理解LILO

null null

〖 返回〗〖转发〗

Linux的引导可以采用多种方式,其加载器LILO(Linux Loader)是一个灵活的引导加载程序,与其他常用的引导加载程序相比,LILO引导方式显得更具有艺术性,对其深入的理解,将有助于我们方便地处理多重系统、网络引导、大硬盘及大内存等诸多棘手的问题。 

  一、LILO的引导机制 

  众所周知,计算机的最初启动是由BIOS控制的,在对一些硬件(如:内存、键盘等)初始化之后,它会试图加载硬盘的主引导记录(MBR)或软盘的引导扇区。 

  MBR可通过两种方式运行,其一是定位到活动分区并加载相应的引导扇区,然后由引导扇区完成该分区内操作系统的基本组件的加载;其二是直接从一指定分区中加载信息,并通过它装入任一分区的操作系统,诸如LILO、OS/2 boot loader及Partition Magic等引导加载程序都可以配置成这种方式。 

  软盘的引导扇区相当于硬盘活动分区的引导扇区,它通常用于装入软盘上的操作系统。 

  由此可见,只要把LILO安装在MBR、活动分区或者引导软盘上,就能接管计算机的控制权,然后由LILO完成后继的引导过程。LILO中建有一个引导表地址编码,借此它的引导程序就能定位到Linux的内核文件,这种地址编码既可以按照柱面/磁头/扇区(CHS)模式,又可以采用LBA的线性块号模式,因此,即使对某些SCSI控制程序LILO也能运转良好。 

  当LILO定位到配置文件后,经过预引导过程,就显示提示符: 
  LILO boot: 

  此时,系统允许选择引导不同的操作系统或者不同的内核配置,按Tab键显示可选项列表,然后输入可选项或者直接回车选择缺省配置,如果选择了引导Linux,还可以直接传递参数到系统内核。 

  和其他系统的引导加载程序相比,LILO具有更大的灵活性,其引导方式也更丰富多彩。 

  ●当LILO被安装在硬盘的MBR、活动分区或引导软盘上时,作为原引导程序的替身,它能引导任一硬盘任一分区上的Linux和其他操作系统; 

  ●除了引导扇区,它没有任何隐含文件,也不需要使用特定的分区,它的配置文件可以在任何分区、甚至是存放在与Linux毫不相干的DOS分区的某个子目录下; 

  ●它能引导几个不同的内核配置,甚至是几个不同的内核; 

  ●它能引导同一机程序上的多个Linux版本; 

  ●它能从网络上引导Linux。 

  LILO的灵活性使得其配置变得相当复杂,当有多个系统共存时,建议先安装其他操作系统,最后再装Linux,这样,设置LILO对其他系统的引导会相对简单一些。 
   
  二、几个重要的LILO引导参数 

  LILO的引导参数有很多,在此只对一些比较重要的参数作一介绍。 
  1.“boot=” 

  此参数指明包含引导扇区的设备名(如:/dev/had),若此项忽略,则从当前的根分区中读取引导扇区。 

  2.“root=” 

  此参数告诉内核启动时以哪个设备作为根文件系统使用,其设定值为构造内核时根文件系统的设备名,可用的设备名有: 

  (1)/dev/hdaN~/dev/hddN:ST-506兼容硬盘,a到d上的N个分区 
  (2)/dev/sdaN~/dev/sdeN:SCSI兼容硬盘,a到e上的N个分区 
  (3)/dev/xdaN~/dev/xdbN:XT兼容硬盘,a到b上的N个分区 
  (4)/dev/fdN:软盘,A:(N=0)或B:(N=1) 
  (5)/dev/nfs:由网络取得根文件系统的标志 

  3.“nfsroot=” 
  若需通过NFS提供根文件系统来引导无盘工作站,此参数为内核指定了网络根文件系统所在的机程序、目录及NFS,其格式为:nfsroot= (〈server_ip〉:)〈root_dir〉(,nfs_options〉) 

  4.“nfsaddrs=” 
  设定网络通讯所需的各种网络界面地址,如无此参数,则内核会试图用反向地址解析协定(RARP)或启动协定(BOOTP)找出这些参数,其格式为: 

  nfsaddrs=〈客户端IP〉:〈服务端IP〉:〈网关IP〉:〈子网屏蔽〉: 
〈客户端名称〉:〈网络设备名 〉:〈auto〉 

  5.“image=” 
  指定Linux的内核文件。 

  6.“delay=” 
  设定引导第一个映像前的等待时间。 

  7.“disk=” 
  此参数为某一特殊的硬盘定义非标准参数。 

  8.“append=” 
  为内核传递一个可选的参数行,其典型的应用是为不能完全由系统自动识别的硬盘指定参数,如:append = "hd=64,32,202" 

  9.“label=” 
  此参数为每个映像指定一个名字,以供引导时选择。 

  10.“read-only” 
  设定以只读方式挂入根文件系统,用于文件系统一致性检查(fsck)。 

  11.“install=” 
  安装一个指定文件作为新的引导扇区,缺省为/boot/boot.b。 

  12.“loader=” 
  说明所使用的链加载程序(chain loader),缺省为/boot/chain.b, 
如果不是从首硬盘或软盘启动,那么,此选项必须说明。 

  13.“table=” 
  说明包含分区表的设备名,如果此参数忽略,引导加载程序将不能传递分区信息到已引导的操作系统。当此参数指向的分区表被修改时,必须重新运行/sbin/lilo。 

  14.“init=” 
  内核初始化时执行的程序,通常过程为init、getty、rc和sh,版本1.3.43以来的Linux内核能够执行/sbin/init说明的命令行,若在引导过程中出现问题,则可设置init=/bin/sh直接跳到Shell。 

  15.“ramdisk_start=” 
  由于内核不能放在压缩的内存文件系统映像内,为使内核映像能够和压缩的内存映像放在一张软盘内,加入“ramdisk_start=〈offset〉”,这样内核才能开始执行。 

  16.“mem=” 
  此参数的目的之一是为Linux指定使用的内存数量:如mem=96MB,目的之二是指定mem=nopentium告诉内核不要使用4MB分页表。 

  17.“vga=” 
  设置显示模式,如80×50、132×44等。 
   
  三、LILO典型配置方法 

  通常情况下,Linux的安装程序自身就可以完成LILO的安装配置,从而较好地解决多重系统的引导问题,如果系统不能自动完成这种配置,则可以通过手工修改配置文件/etc/lilo.conf来实现不同条件下的引导。 

  1.当系统能自动完成配置时 

  对于这种情况只有一个建议:将LILO安装到Linux分区的根上,而不是MBR这个多事地带。假设当前hda1中装有DOS/Windows,hda2中安装了Linux,则/etc/lilo.conf的内容大致如下: 

  boot=/dev/hda2#指定引导位置compact delay=50#延时5秒root=current 
#根在当前分区image=/boot/vmlinuz#指定linux的内核文件  label=linux 
#用linux为代表名称 other=/dev/hda1#其他操作系统所在的分区table=/dev/hda 
#指定包含分区表的硬盘label=dos#用dos为代表名称 

  2.当系统无法自动完成配置时 

  系统无法自动完成配置的情况不外乎两种: 
  (1)BIOS不能直接看到Linux的根分区; 
  (2)BIOS只能读写标准IDE硬盘的前504MB。 

  这时,必须遵循一个最基本的原则:建立一个BIOS能存取的较小的Linux分区,其中包含内核文件、映射文件及链加载程序等必要内容,而根则可以是另外一个独立的分区。至于配置上的其他细节,我们通过以下实例来进行说明。 

  例1:主硬盘为IDE接口,第二硬盘为SCSI接口,根文件在SCSI上。 

  对策:在IDE硬盘上划分一个较小的Linux分区(/dev/hda2),其中包含基本文件,挂接到/u2下,其配置文件/etc/lilo.conf的主要内容为: 

  boot=/dev/hda#lilo装在主ide的mbr install=/u2/etc/lilo/boot.b 
#从boot.b安装lilo引导记录map=/u2/etc/lilo/map#安装程序建立此映射文件,告诉引导载入程序内核块的位置compact timeout=50 image=/u2/vmlinuz 
#内核文件应事先拷贝到/u2下label=linux root=/dev/sda1#告诉内核根系统在scsi硬盘上read-only other=/dev/hda1 loader=/u2/etc/lilo/chain.b 
#指明加载程序label=dos 

  例2:一个标准的IDE大硬盘需安装Linux和DOS/Windows。 

  对于大硬盘问题,很多人只知道低于1024个柱面的限制,而不知为什么标准的IDE硬盘只能认前504MB。 

  其实,BIOS的int13调用是采用三个位元组的CHS编码,10位为柱面号,8位为磁头号,6位为扇区号。可能的柱面号码是0~1023,可能的磁头号码是0~255,而磁道上可能的扇区号码是1~63,以这24位最多可以定址8455716864个位元组(7.875GB)。 

  但不幸的是,标准的IDE介面容许256个扇区/磁道、65536个柱面及16个磁头。它自己本身可以存取237= 137438953472(128 GB),但是加上BIOS方面63个扇区与1024个柱面的限制后只剩528482304(504MB)可以定址得到。 

  对策:在硬盘的前500MB中划分350MB(/dev/hda1)给DOS,150MB(/dev/hda2)给Linux,在相应的配置文件中应说明硬盘的参数。 
  boot=/dev/hda 
  ... ... 
  disk=/dev/hda 
  bios=0x80 
  sectors=63 
  heads=16 
  cylinders=2100 
  image=/vmlunuz 
  append="hd=2100,16,23" 
  root=/dev/hda2 
  label=linux 

  四、LILO的卸载 

  当LILO覆盖了引导扇区时,它会保留一个引导扇区的备份在/boot/boot.xxyy中,其中xxyy是16进制的设备主/次号码 
(major/minor numbers),利用命令“ls -l /dev/device”就可获得硬盘或分区的主/次号码。如果这些备份文件已经存在,那么,当你重新安装LILO或重构内核时,它将不再生成此文件,这就保证了此备份文件是最原始的引导扇区。 

  若要卸载LILO,你只需恢复初始的引导扇区就可以了。例如:LILO安装在/dev/had,对应的备份文件为/boot/boot.0300,简单地使用下面的命令即可: 

  dd if=/boot/boot.0300 of=/dev/had bs=446 count=1 

  当然,若想完全卸掉Linux,必须用Linux的fdisk对Linux分区进行破坏,因为DOS的fdisk无法移去非DOS分区。 

  关于LILO值得探讨的问题还有很多,但只要懂得了其内部机制,对更复杂的实际情况也能较圆满地解决。

责任编辑:知识库管理员(2000-12-28 14:10)
引导加载程序之争: LILO 和 GRUB 在不考虑他们的工作或专业情况下,所有 Linux 用户都会使用的是哪个工具?引导加载程序。通过本文了解引导加载程序的工作原理,认识两个流行的引导加载程序 LILO(LInux LOader)和 GNU GRUB(GRand Unified Boot loader), 并研究两者各自的优点和缺点。什么是引导加载程序?最简单地讲,引导加载程序(boot loader) 会引导操作系统。当机器引导它的操 阅读详情

相关推荐

12、Linux 安装与使用全指南

本文详细介绍了Linux系统的完整安装与使用指南,涵盖软件安装、引导配置(如创建引导软盘和安装LILO)、安装后必要步骤(如用户创建、fstab编辑)、系统关闭方法以及常见安装问题的解决方案。同时提供了系统性能优化、安全设置建议和实用的日常操作技巧,帮助用户顺利部署并高效使用Linux系统。适合初学者和进阶用户参考学习。

beer8的博客 57

4412之启动流程分析

文章目录序言4412的地址映射BL1介绍BL2介绍iRAM布局bootloader镜像的整体构成 序言 前面一阶段的学习,我掌握了通过ADB或者TF开烧写系统、通过拨码开关设置系统的启动介质,今天我就要来详细探究一下这里面的原理。拨码开关是怎么控制启动介质的选择的,烧写的都是些什么东西?被烧写到了什么地方?芯片内部有怎样的机制去配合这些烧写过程?这都是我们要详细探讨的问题。这些问题其实都是属于一个...

Shijia Yin 880

大连海事大学课设题目/基于LM331的频率电压转换器

部分基于LM331的频压转换的实物连接问题

2301_76649592的博客 3226

lilo--原理篇

lilo--原理篇null joe (左右为难)〖返回〗〖转发〗作者 joe (左右为难)                    标题  关于LiLo--原理篇                    时间  Wed Aug 25 15:18:42 1999                   ──────────────────────────────────         

hem的专栏 3703

ORB-SLAM3复现的详细过程——配置安装及ROS和脚本运行---Ubuntu20.04

所提供的图像具有高动态范围,事先进行了光度标定,用20Hz的帧率采集,分辨率为1024像素*1024像素;需要下载数据集dataset-room1_512_16和rgbd_dataset_freiburg1_desk。在一键安装ROS后,只需要再安装Pangolin即可,其他所有的需要都已经存在。用微型飞行器采集的视觉惯性数据集,包含双目相机和IMU同步测量数据及位姿的真值。第二条命令中的${ROS_PACKAGE_PATH}是自己文件的路径。其采用的相机和IMU传感器,在硬件上进行了时间同步。

琉璃轻纱的博客 1万+

SPSS与SPSS Modeler,不一样的世界

1. SPSS软件的前世今生 1.1 IBM SPSS的由来 与数据打过交道的小伙伴们,应该对SPSS软件都不陌生。SPSS是世界上最早的统计分析软件,由斯坦福大学的三个研究生大牛于1968年研发,同时还成立了SPSS公司。SPSS最初的全称是Solutions Statistical Package for the Social Sciences(社会科学统计软件包),随着SPSS产品服务领...

qq_24339451的博客 3613

深入理解LILO(转)

深入理解LILO(转)[@more@]Linux的引导可以采用多种方式,其加载器LILO(Linux Loader)是一个灵活的引导加载程序,与其他常用的引导加载程序相比,LILO引导方式显得更具有艺术性,对其深入的理解,将有助...

congjukun0600的博客 164

OCTF2016--piapiapia

知识点: php反序列化长度变化尾部字符串逃逸 目录扫描发现www.zip,下载得到源码 源码有index.php,输入账号密码后会进入profile.php,还有register.php、updata.php、class.php和config.php flag值在config.php中,想办法访问到其内容 通过seay代码审计找到一点线索 看到profile.php中存在任意文件读取漏洞,前面还有反序列化 现在我们有个大体思路了,update.php中有一个$prof..

Oavinci的博客 473

LILO详解

LILO详解 此文系转载 作者:佚名 原始网址:不详 LILO(Linux Loader)是Linux自带的一个优秀的引导管理器,使用它可以很方便地引导一台机器上的多个操作系统。与其他常用的引导加载程序相比,LILO引导 方式显得更具有艺术性,对其深入的理解,将有助于我们方便地处理多操作系统、网络引导、大硬盘及大内存等诸多棘手的问题。   通常我们谈到LILO,会涉及到两个方

stonesharp的专栏 2253

【MATLAB】STM32电机调速闭环控制工程

本文提出了一种基于MATLAB仿真与STM32实现的直流电机闭环PID调速控制方案。通过MATLAB建立电机数学模型并进行参数整定,仿真验证了增量式PID算法在启停、稳态和抗扰动方面的优越性能。基于STM32F103搭建了硬件系统,实现了编码器测速、定时中断控制、PWM输出等功能。实测表明,该系统转速超调<2%、稳态误差±2r/min,具备快速响应和强抗扰能力。相比开环控制,闭环调速显著提升了动态性能和稳态精度。方案提供了完整的仿真代码和嵌入式工程源码,可直接应用于智能小车、工业传动等场景,具有较高的

unber的博客 50

《唤醒你的AI同事:WorkBuddy从零上手》000:介绍及目录

《唤醒你的AI同事:WorkBuddy从零上手》全书导览与总目录:000–043 共 44 篇,覆盖从环境搭建、对话基础到资料库、行业助手与多模态生成的入门实战。含完整篇目速查与编号直达,建议关注收藏。

LuckyHanMo的博客 586

Linux启动过程剖析

[url]http://student.youkuaiyun.com/space.php?uid=45153&do=thread&id=3274[/url] Linux启动过程的剖析能帮助那些想深入学习Linux用户建立一个相关Linux启动过程的清晰概念,进而可以进一步研究Linux接下来是如何工作的。 Linux启动过程如下:当用户打开PC的电源,BIOS开机自检,按BIOS中设置的启动设备(通常...

Wuaner的博客 120

点云语义分割:RandLANet模型推理C++部署(2)

一、数据读取及预处理 二、模型推理 三、结果保存

zhaoguanhua的博客 3798

Redhat认证考试心得之二满分通过TroublesShooting(转)

Redhat认证考试心得之二满分通过TroublesShooting(转)[@more@]  作者:马路遥    头一盘菜就是重点和难点.考50分或更少的绝对是大有人在.笔者之所以能通过RHCE,靠的就是满分通过Troubles...

cudao7505664的专栏 116

企业如何开展BI建设--指标体系建设

很多企业的数字化转型工作都是从做BI项目开始的,很多企业认为,BI就是做指标大屏,所以做了很多的驾驶舱,也做了很多指标,有从系统取的,有手工填报的,甚至手工填报的比例占到了70%,最终BI沦为了填报系统,业务认为BI就是把从线下的微信沟通转到了线上录入展示,并没有给业务代来任何提升,久而久之,BI大屏就没人关心,公司高层也认为数据都是填报的,都经过了加工处理,这种数据不可信,不能反映业务开展的实际。其实在BI系统建设之前,我们首先要做的就是要梳理企业的指标,到底我们要展示哪些指标?

262

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

linux期中测试答案 版本号,Linux认证测试题含答案

Linux认证测试题含答案21、 下列关于Red Hat Linux 9.0中的LILO启动引导器叙述中,不正确的是(C )。(选择一项)a) LILO可以安装在硬盘的MBRb) LILO可以安装在硬盘的活动分区c) LILO支持大硬盘,可以引导根分区在10GB以外的操作系统d) LILO可以安装在软盘22、 你使用命令“vi /etc/inittab”查看该文件的内容,你不小心改动了一些内容,为...

weixin_32661831的博客 814

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

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

数据分析课堂笔记20230130

123

zhangting_123abc的博客 72

深度学习工具包 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启动过程

深入理解Linux启动过程 本文详细分析了Linux桌面操作系统的启动过程,涉及到BIOS系统、LILO 和GRUB引导装载程序,以及bootsect、setup、vmlinux等映像文件,并结合引导、启动原理和具体的代码实现机制由浅入深地进行了分析。 初学者刚接触Linux桌面系统会感觉系统启动速度较慢,那么,为什么它的启动速度慢呢?本文就桌面系统的引导和...

116

深入理解linux启动过程

linux系统的启动过程是由很多步骤组成的,但是,无论你是启动一个标准的x86桌面计算机,还是一个嵌入式PowerPC的目标板,大多数的流程是惊 人得相似的。这篇文章,探索了linux从最初的启动准备到用户空间中某个程序被开启之间的启动过程,跟随这个流程,你还能学到其他许多与启动有关的知 识,例如,boot loaders,内核解压缩,初始化内存盘,以及其他一些linux启动的部分。在很...

114

深入理解linux启动顺序

本文详细分析了Linux桌面操作系统的启动过程,涉及到BIOS系统、LILO 和GRUB引导装载程序,以及bootsect、setup、vmlinux等映像文件,并结合引导、启动原理和具体的代码实现机制由浅入深地进行了分析。     初学者刚接触Linux桌面系统会感觉系统启动速度较慢,那么,为什么它的启动速度慢呢?本文就桌面系统的引导和启动过程展开分析,以期对初学者熟悉Linux有所帮助。

dongqifan的专栏 370
上一篇: LILO配置指南(转)
下一篇: 在系统上同时安装nt和Linxu的一个狂easy的方法
hem
hem
博客等级 码龄26年 19粉丝 287原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值