79、Linux系统操作与问题排查全解析

Linux系统操作与问题排查全解析

1. 系统性能优化相关命令解析

在Linux系统中,有许多命令可用于优化系统性能和监控进程。以下是一些关键命令的详细解析:
- ps命令 :GNU ps命令支持传统BSD和Unix ps命令的参数,以及GNU创建的新选项。其不同风格的选项有不同的标识方式:
- Unix风格选项:在选项前加单个破折号,如 -t 用于显示特定终端上运行的所有进程, -A 用于显示所有活动进程, -ef 用于显示睡眠进程, -x 用于显示当前用户账户运行的所有进程。
- 新GNU选项:使用双破折号标识。
- 传统BSD风格选项:选项字母前不放置任何符号。
- 注意,ps命令不支持Linux风格选项和数字选项。
- top命令 :该命令可显示系统上当前运行的进程,并每3秒更新一次。与之对比,ps命令显示当前运行的进程但不实时更新,lsof命令显示进程当前打开的文件而非进程本身,pkill和kill命令用于停止运行的进程而非显示它们。
- top命令中的排序命令 :
- S 命令:根据每个进程的累积CPU时间显示进程。
- l 命令:根据负载平均值显示进程。
- F 命令:允许选择用于排序显示的字段。
- r 命令:反转显示的排序顺序。
- y 命令:突出显示正在运行的任务。
- top输出列含义 :RES列显示应用程序使用的物理内存量,VIRT列显示虚拟内存量,SHR列显示使用的共享内存量,S列显示应用程序进程的状态,%MEM列显示应用程序使用物理内存的百分比。
- 进程优先级相关命令 :
- nice 命令:允许为应用程序指定优先级级别。
- renice 命令:允许更改系统上已运行应用程序的优先级级别。
- pkill 命令:可根据进程名称的搜索词向正在运行的进程发送HUP信号。
- kill 命令:通过指定进程ID来停止已运行的应用程序。

以下是这些命令的操作流程总结:

graph LR
    A[系统性能优化] --> B[进程监控]
    B --> C[ps命令]
    B --> D[top命令]
    A --> E[进程优先级调整]
    E --> F[nice命令]
    E --> G[renice命令]
    A --> H[进程停止]
    H --> I[pkill命令]
    H --> J[kill命令]
2. 用户问题排查方法

当遇到用户访问问题时,需要有针对性地进行排查。以下是不同场景下的排查方法:
- Lamar的本地访问问题 :Lamar是承包商,其账户应设置了过期日期。所以,首先要检查其账户是否已过期。
- Irene的登录问题 :Irene通常使用tty4终端登录系统,今天遇到问题但能使用tty3终端登录,此时应首先检查tty4设备文件是否损坏。
- Vincent的ssh连接问题 :让Vincent在ssh命令后添加 -vvv 选项,以提供大量有助于追踪问题的信息。
- Anton的日志查看问题 :Anton应查看 /var/log/secure 和使用 lastlog 命令查看 /var/log/lastlog 日志文件。
- Tarissa的脚本运行问题 :要允许Tarissa运行脚本,需将她添加到wheel组,并为脚本文件添加执行(x)权限。
- Miles的目录切换问题 :Miles要将当前工作目录更改为 /home/miles ,该目录的其他部分必须具有执行(x)权限。
- Sarah的文件创建问题 :文件创建问题可能由多种原因引起,如磁盘空间不足、权限问题等,但文件具有不可变位(immutable bit)时不能被删除。可使用 lsattr 命令检查文件是否设置了不可变位。
- Melissa的默认编辑器设置问题 :将 export EDITOR='vim' 行添加到Melissa的 ~/.profile 文件中,可将vim编辑器设置为她的默认编辑器,且进入子shell时仍保持设置。
- Mark的默认shell问题 :可使用以下命令检查Mark的默认shell是否更改:
- echo $SHELL :显示当前shell。
- sudo grep tcsh$ /etc/passwd :显示 /etc/passwd 文件中默认shell为 /bin/tcsh 的记录。
- sudo getent passwd MW2015 :显示Mark账户的密码文件设置,包括默认shell。

以下是用户问题排查的操作步骤列表:
|问题场景|排查步骤|
| ---- | ---- |
|Lamar本地访问问题|检查账户是否过期|
|Irene登录问题|检查tty4设备文件是否损坏|
|Vincent ssh连接问题|添加 -vvv 选项到ssh命令|
|Anton日志查看问题|查看 /var/log/secure 和 /var/log/lastlog |
|Tarissa脚本运行问题|添加到wheel组并添加执行权限|
|Miles目录切换问题|检查目录是否有执行权限|
|Sarah文件创建问题|使用 lsattr 检查不可变位|
|Melissa默认编辑器设置|添加 export EDITOR='vim' 到 ~/.profile |
|Mark默认shell问题|使用 echo $SHELL 、 sudo grep tcsh$ /etc/passwd 、 sudo getent passwd MW2015 检查|

3. Linux设备相关知识

在Linux系统中,不同的硬件设备和接口有其独特的工作方式和管理方法。
- PCI板卡 :PCI板卡使用中断、I/O端口和DMA通道与PC主板进行数据收发。Linux内核使用 /proc/ioports 文件来跟踪系统上安装的PCI板卡使用的I/O端口。
- 设备文件 :内核为Linux系统上的每个设备在 /dev 目录中创建文件,这些文件用于向设备发送数据和从设备读取数据。而 /dev/mapper 目录用于创建虚拟文件,这些虚拟文件与操作虚拟LVM卷上数据的应用程序进行交互,然后再将数据发送到物理硬盘设备。
- 设备信息查看命令 :
- lsdev 命令:显示连接到系统的所有设备的硬件信息。
- lsblk 命令:仅显示块设备的信息。
- lspci 命令:仅显示PCI设备的信息。
- lsusb 命令:仅显示USB设备的信息。
- dmesg 命令:显示内核环形缓冲区中包含的内核事件消息。
- X Windows图形系统 :X.org和Wayland软件包为Linux实现了X Windows图形系统,而CUPS软件包实现了Linux的PostScript打印功能,X11是X Windows标准但不是软件包,udev程序用于检测热插拔设备。

以下是设备相关操作的流程:

graph LR
    A[Linux设备管理] --> B[PCI板卡管理]
    B --> C[/proc/ioports文件]
    A --> D[设备文件操作]
    D --> E[/dev目录]
    D --> F[/dev/mapper目录]
    A --> G[设备信息查看]
    G --> H[lsdev命令]
    G --> I[lsblk命令]
    G --> J[lspci命令]
    G --> K[lsusb命令]
    G --> L[dmesg命令]
    A --> M[图形系统实现]
    M --> N[X.org软件包]
    M --> O[Wayland软件包]

综上所述,掌握这些Linux系统的操作命令和问题排查方法,能够帮助用户更好地管理和维护系统,提高系统的性能和稳定性。无论是系统性能优化、用户问题排查还是设备管理,都需要根据具体情况选择合适的方法和工具。

Linux系统操作与问题排查全解析

4. 交换空间管理

在Linux系统中,交换空间的管理至关重要。当系统物理内存不足时,交换空间可以作为虚拟内存使用。以下是关于交换空间管理的详细内容:
- 错误选项分析 :
- free 命令用于显示内存相关信息,如空闲内存、已使用内存和缓冲/缓存使用情况,所以它与交换空间的添加操作无关。
- fstab 是一个文件,而非命令。该文件用于记录交换分区或文件的信息,以确保交换空间在系统重启后仍然可用,但它本身不能用于添加交换空间。
- swapoff 工具用于将分区或文件从交换空间中移除,并非添加交换空间的工具。
- 正确操作 :如果系统中已经存在多个交换空间,且其中一个交换分区或文件位于逻辑卷上,那么可以使用LVM工具来增加逻辑卷的大小,从而添加更多的交换空间。在扩展逻辑卷后,还需要使用 mkswap 和 swapon 命令对逻辑卷进行相应操作。

以下是交换空间管理的操作步骤总结:
|操作类型|操作步骤|
| ---- | ---- |
|错误操作|使用 free 命令、 fstab 文件、 swapoff 工具添加交换空间|
|正确操作|使用LVM工具增加逻辑卷大小,扩展后使用 mkswap 和 swapon 命令|

graph LR
    A[交换空间管理] --> B[错误操作]
    B --> C[free命令]
    B --> D[fstab文件]
    B --> E[swapoff工具]
    A --> F[正确操作]
    F --> G[LVM工具增加逻辑卷]
    G --> H[mkswap命令]
    H --> I[swapon命令]
5. 系统综合问题处理总结

为了更清晰地展示Linux系统操作和问题排查的整体流程,我们对前面的内容进行综合总结。
- 性能优化 :通过 ps 和 top 命令监控进程,使用 nice 和 renice 命令调整进程优先级,利用 pkill 和 kill 命令停止进程。
- 用户问题排查 :根据不同用户的具体情况,如账户过期、设备文件损坏等,采取相应的排查步骤。
- 设备管理 :了解不同硬件设备和接口的工作方式,使用 lsdev 、 lsblk 、 lspci 、 lsusb 和 dmesg 等命令查看设备信息,掌握X Windows图形系统的实现软件包。
- 交换空间管理 :避免错误操作,正确使用LVM工具和相关命令添加交换空间。

以下是系统综合问题处理的整体流程:

graph LR
    A[Linux系统管理] --> B[性能优化]
    B --> C[进程监控]
    C --> D[ps命令]
    C --> E[top命令]
    B --> F[优先级调整]
    F --> G[nice命令]
    F --> H[renice命令]
    B --> I[进程停止]
    I --> J[pkill命令]
    I --> K[kill命令]
    A --> L[用户问题排查]
    L --> M[账户过期检查]
    L --> N[设备文件检查]
    L --> O[日志查看]
    A --> P[设备管理]
    P --> Q[PCI板卡管理]
    P --> R[设备文件操作]
    P --> S[设备信息查看]
    A --> T[交换空间管理]
    T --> U[正确操作]
    T --> V[错误操作避免]

总之,Linux系统的操作和管理是一个复杂而又细致的过程。通过深入了解各种命令和工具的使用方法,以及掌握问题排查的技巧,用户可以更好地应对系统中出现的各种问题,确保系统的稳定运行。无论是新手还是有经验的管理员,都应该不断学习和实践,以提高自己的Linux系统管理能力。

相关推荐

Linux内核升级与NVIDIA驱动适配实战:从DKMS构建到AI辅助Bug排查

这次我们来看一个 Linux 内核升级与 NVIDIA 驱动适配的实战记录。核心不是讲内核有多新,而是升级后显卡驱动能不能正常用、有没有性能提升、以及如何排查和修复那些“埋”在代码里,直到被 Gemini 这类工具扫描才发现的潜在 Bug。对于依赖 CUDA 做开发、跑 AI 模型或者玩游戏的 Linux 用户来说,内核和驱动的兼容性直接决定了系统能否稳定运行。 从标题和网络讨论来看,这次升级到 kernel 7.2 的体验“平平无奇”,但 NVIDIA 驱动需要调整,并且还涉及到一个被 AI 工具发现的

dilv4062的博客 557

LS1046A嵌入式Linux系统部署实战:SD卡与QSPI Flash启动全解析

嵌入式Linux系统部署是嵌入式开发中的核心环节,它决定了设备从硬件上电到软件运行的完整流程。其基本原理是通过引导加载程序(如U-Boot)初始化硬件,加载操作系统内核与根文件系统,最终启动完整的Linux环境。这一过程的技术价值在于为嵌入式设备提供了稳定、可定制且可远程维护的软件基础。在实际应用中,根据产品阶段的不同,开发者常需在灵活的SD卡启动与可靠的QSPI Flash启动之间做出选择。SD卡部署凭借其便捷的文件更新方式,成为开发调试阶段的首选;而QSPI Flash则因其固化的存储特性,是产品量产时

weixin_30800987的博客 346

79、Linux 系统技术要点全解析

本文全面解析了Linux系统的技术要点,涵盖系统与软件基础、网络配置、文件存储、用户权限、安全加密、系统监控、图形界面、服务管理、数据库、无线网络、打印服务等多个方面。深入讲解了Red Hat系列系统的配置与管理方法,介绍了RPM包管理、TCP/IP网络设置、NFS和Samba共享服务、SSH与防火墙安全机制,并扩展到cron定时任务、Shell脚本编程、RAID配置等高级操作。同时探讨了在云计算、容器化(如Docker)、人工智能和物联网等新兴技术趋势下Linux的应用与发展,提供了丰富的命令示例、配置流

a3b4c5的博客 59

62、Linux 网络资源问题分析与排查指南

本文详细介绍了在Linux系统中分析和排查网络资源问题的方法,涵盖了子网掩码配置、路由诊断、防火墙问题处理、服务运行状态检查以及网络接口错误分析等方面。通过使用如ping、ip route、traceroute、ethtool等常用工具,帮助用户快速定位并解决网络故障,提高网络管理的效率和可靠性。

juice的博客 90

40、Linux 系统故障排查指南

本文详细介绍了Linux系统中常见的磁盘I/O瓶颈、磁盘空间不足、inode耗尽以及网络通信故障的排查方法。通过iotop、df、du等工具分析磁盘问题,使用ethtool、ifconfig、route、nslookup、ping、traceroute、telnet和nmap等工具逐步诊断网络故障,提供了一套完整的系统故障排查流程与解决方案,适用于运维人员快速定位并解决系统问题。

gamma的博客 53

79、Linux 操作指南:从光盘刻录到文本文件处理

本文详细介绍了在Linux系统中从光盘和USB启动盘制作到桌面环境配置、Shell操作、文件系统管理以及文本文件处理的完整流程。涵盖了K3b和命令行刻录ISO镜像、使用Live USB Creator创建可启动U盘、GNOME桌面定制、虚拟控制台切换、终端颜色设置、常用Shell命令技巧、目录文件操作及权限管理,并深入讲解了vi编辑、find与grep搜索、批量备份等文本处理方法。同时提供了常见问题解决方案和操作流程图,适合初学者和进阶用户系统学习Linux核心操作技能。

v5w6x的博客 131

【科研导航】【计算机视觉与图像处理】从顶刊到潜力股:跨学科(电子/电气/信息)SCI期刊投稿全景图

本文全面解析了计算机视觉与图像处理领域的SCI期刊投稿策略,涵盖从顶刊到潜力股的各类期刊特点。重点介绍了IEEE Transactions系列、Elsevier旗舰期刊以及二区优质期刊的审稿偏好和投稿技巧,特别适合电子/电气/信息交叉学科的研究者。文章还提供了三区、四区期刊的实用投稿建议,帮助科研新手快速找到适合的发表平台。

weixin_30897233的博客 81

auto.js梦幻西游游戏脚本,梦幻西游脚本开发思路

本篇文章给大家谈谈梦幻西游脚本用什么语言写,以及auto.js梦幻西游游戏脚本,希望对各位有所帮助,不要忘了收藏本站喔。

npy199331的博客 1938

C++调用海康相机SDK采集图像(C++\QT Creator\openCV\线程\接口)

C++调用海康相机SDK采集图像(C++\QT Creator\openCV\线程\接口) 之前写了一篇关于C++调用海康相机SDK采集图像的文章,有很多人私下发送消息咨询了一些问题,由于工作繁忙,只答复了一部分问题,今天抽出时间从头梳理了一下大家提出的问题,把我能够回答的问题都解答一次。上一次的程序只是简单的实现了图像的采集,没有使用到线程,今天把程序重新做出调整,把线程和多态加进去。文章最后有项目的下载地址。 我使用的是QT Creator这个IDE,版本信息如下: 我把相机采集的图像转换为openC

大樱桃的博客 1万+

Python 列表(list)所有方法超全汇总

以上就是 Pythonlist 列表全部 11 个内置方法的完整汇总,全覆盖、无遗漏。掌握所有列表方法,基本可以应对 99% 的列表操作场景,无论是日常开发、数据分析还是算法刷题都能高效编码。

jdksjw的博客 232

RV1126B SDK移植实战:从DDR配置到USB烧写全解析

本文详细解析了RV1126B SDK移植的核心实战流程,重点攻克了DDR初始化失败与USB烧写两大难题。文章从理解启动流程入手,提供了DDR配置错误的排查步骤、SDK编译配置要点,并深入讲解了USB烧写的完整操作与常见问题解决方案,旨在帮助开发者高效完成系统移植与稳定运行。

weixin_29164497的博客 542

grpc安装与简单demo测试

grpc安装: 由于工作需要,最近在学google的rpc开源框架;由于本人菜鸟一枚,而且是从Windows开发转到Linux;由于之前版本控制使用的是svn,没有使用过git,所以从GitHub上下载代码是通过浏览器下载zip格式的压缩文件,折腾了好几天了,发现了各种坑,各种缺少库,各种不知道怎么把这个库给装机器上。对于一个不熟悉Linux的人来说,这个体验简直糟糕透了。没办法了又在机器上装了...

old__captain的博客 4833

电磁阀的符号解读

先数方框数量定“几位”(工作位置数 );数接口数量(P、A、R等 )定“几通”;看箭头、截断符号,结合常态位(弹簧侧/中间位 ),分析通电/断电时的通路切换;字母(P、A、R )、线圈(单/双电控 )、弹簧(复位 )辅助确认功能(如NO/NC对应常态通断 )。不同厂家符号细节(如编码、线圈画法 )有差异,遇到陌生符号,建议结合产品手册、品牌规范核对,就能精准读懂电磁阀的“语言”啦~

创新改变世界! 6886

Qt C++ 信号发生器控制软件

waveformComboBox->addItems({"正弦波", "方波", "三角波", "锯齿波", "脉冲波"});frequencyLabel = new QLabel("频率 (Hz):");amplitudeLabel = new QLabel("幅值 (V):");offsetLabel = new QLabel("直流偏移 (V):");} else if (currentWaveform == "三角波") {} else if (currentWaveform == "方波") {

寒寒豆豆软件公司的博客 124

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

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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

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

上一篇: 2、机器学习项目生命周期、挑战与应对策略
下一篇: 23、Java EJB安全身份与JNDI注入详解
lambda
博客等级 码龄23年 49粉丝 1303原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值