Linux新手必看:mount和umount命令的5个实用技巧(附常见问题解答)

mount命令应用和umount命令应用 记录:348 场景:在CentOS 7.9操作系统上,使用mount命令挂载镜像到指定目录、挂载磁盘到指定目录;使用umount命令卸载已挂载到指定目录的磁盘或者镜像。 阅读详情

Linux文件系统挂载实战:从基础操作到深度管理技巧

如果你刚开始接触Linux,面对一个插入的U盘却找不到“我的电脑”里那个熟悉的盘符,可能会感到一丝困惑。这与Windows的“即插即用”体验截然不同,背后体现的是Linux赋予用户的强大控制权和灵活性。在Linux的世界里,外部存储设备并非自动呈现,而是需要你亲手“打开”一扇门,将其内容映射到目录树上的某个位置,这个过程就是“挂载”。mount和umount正是掌管这扇门的钥匙。掌握它们,你不仅能解决U盘访问的基本问题,更能深入理解Linux文件系统的运作逻辑,解锁从桌面应用到服务器管理的诸多高级场景。本文将从实际操作出发,避开枯燥的语法罗列,直接切入新手最常遇到的真实问题和进阶技巧,让你在动手实践中快速建立自信。

1. 理解挂载:Linux文件系统的“连接器”

在深入命令之前,我们得先搞明白“挂载”到底意味着什么。你可以把Linux的整个文件系统想象成一棵倒置的大树,根目录/是树干,/home、/etc、/var等是主要枝干。所有的文件和目录都生长在这棵树上。然而,你的硬盘、U盘、光盘乃至网络存储,在物理上是独立的存储单元。挂载,就是在这棵已有的目录树上,选择一个“挂载点”(一个空目录),将某个独立存储设备(如/dev/sdb1)的整个文件系统“嫁接”到这个点上。从此,访问这个挂载点目录,就等于访问了那个设备的内容。

这与Windows的“盘符”(C:, D:)概念有本质区别。Windows为每个存储卷分配一个独立的字母标识,形成平行的多个“树”。而Linux只有一棵统一的树,所有设备都作为这棵树的一个分支存在。这种设计带来了极大的统一性和灵活性,例如,你可以将另一个硬盘挂载到/home目录下,无缝扩展用户空间,而用户几乎无感。

为什么需要手动挂载? 这源于Linux的“一切皆文件”哲学和其服务器起源。在服务器环境中,存储设备的添加、移除和配置是明确的运维操作,需要精确控制,避免自动行为导致的数据不一致或服务中断。手动挂载赋予了管理员完全的掌控权。

一个常见的误解是认为/mnt或/media是唯一能挂载的地方。实际上,任何空目录都可以作为挂载点。/mnt传统上用于临时挂载,/media常用于用户可移动介质(桌面环境常自动挂载于此),但你可以创建/data/backup_disk这样的目录来挂载备份硬盘,使路径意义更清晰。

提示:在尝试挂载前,务必使用 lsblk 或 fdisk -l 命令确认设备的准确标识符(如 /dev/sdc1)。误操作可能导致数据丢失。

2. mount命令核心技巧:超越基础挂载

知道了原理,我们来动手。基础的mount /dev/sdb1 /mnt确实能工作,但要想用得顺手、用得安全,下面这些技巧必不可少。

2.1 精准识别设备:告别/dev/sdX的猜测游戏

新手最头疼的问题之一:“我的U盘到底是sdb1还是sdc1?”尤其是在有多个存储设备的主机上。依赖设备字母顺序(a, b, c...)是不可靠的,因为系统检测顺序可能变化。

方法一:使用lsblk和blkid进行智能识别 lsblk命令以树状图清晰展示所有块设备,包括它们的挂载点、大小和类型。插入U盘前后各执行一次,新增的那个设备就是它。

lsblk -f

这个-f参数会同时显示文件系统类型(如ext4, ntfs, vfat),信息更全面。

对于已经知道标签(LABEL)或UUID的设备,blkid命令是更直接的工具。每个文件系统在格式化时都可以被赋予一个唯一的UUID(通用唯一识别码)和一个可读的标签。

sudo blkid

输出会列出所有存储设备的UUID、标签和类型。你可以通过标签或UUID来挂载,这比依赖易变的/dev/sdX稳定得多。

sudo mount LABEL="MY_USB" /mnt
# 或
sudo mount UUID="a1b2c3d4-5678-90ef..." /mnt

方法二:利用/dev/disk/by-*符号链接 系统在/dev/disk/目录下创建了基于不同属性的稳定符号链接。

  • /dev/disk/by-uuid/: 按UUID链接。
  • /dev/disk/by-label/: 按标签链接。
  • /dev/disk/by-id/: 按硬件ID链接(包含厂商、型号等信息,最稳定)。

例如,你可以这样挂载:

sudo mount /dev/disk/by-label/BackupDrive /data/backup

这种方式完全避免了设备名变化带来的困扰。

2.2 玩转-o挂载选项:定制你的访问权限

-o选项是mount命令的“瑞士军刀”,它允许你精细控制挂载后的行为。下面是一些实战中高频使用的选项:

  • ro / rw: 只读或读写挂载。对于只希望查看内容的光盘或备份盘,使用ro是重要的安全措施。
  • noexec: 禁止执行该文件系统上的任何二进制程序。在挂载来源不可信的设备(如公共电脑的U盘)时,能有效防止恶意程序自动执行。
  • nosuid: 忽略SUID权限位。SUID位允许程序以文件所有者身份运行,存在安全风险,nosuid可以阻断它。
  • nodev: 不解释该文件系统上的设备文件。防止攻击者通过创建设备文件进行内核操作。
  • nofail: 系统启动时,如果此设备不存在,忽略错误继续启动。对于不总是连接的USB硬盘,在/etc/fstab中配置此选项非常关键。
  • defaults: 这是最常用的选项集合,通常等价于rw,suid,dev,exec,auto,nouser,async。

一个综合性的挂载命令可能长这样:

sudo mount -o rw,noexec,nosuid,nodev UUID="xxxx" /mnt/usb_safe

这条命令以读写方式挂载U盘,但同时禁用了执行程序、SUID位和设备文件,为系统增加了一层防护。

2.3 临时修改挂载参数:remount的妙用

想象一个场景:你以读写方式挂载了一个设备,进行了一些操作,现在想把它改为只读状态以防止误操作,但又不想中断服务或卸载它。这时remount选项就派上用场了。

# 假设 /dev/sdb1 已挂载在 /data 上,且为rw模式
sudo mount -o remount,ro /data
# 或者使用设备名
sudo mount -o remount,ro /dev/sdb1

执行后,/data目录立即变为只读。这在线上系统维护、进行只读检查或安全加固时非常有用。同样,你也可以从ro重新remount为rw。

2.4 挂载镜像文件:像访问磁盘一样访问.iso和.img

Linux的mount命令不仅能挂载物理设备,还能直接挂载磁盘镜像文件,这在进行系统修复、软件安装或数据提取时极其方便。

对于标准的ISO光盘镜像:

sudo mount -o loop ubuntu-22.04.iso /mnt/iso

-o loop选项告诉内核,将这个文件模拟成一个回环块设备。之后,/mnt/iso目录里就是ISO文件的内容,你可以直接复制文件或执行安装程序。

对于RAW格式的磁盘镜像文件(如.img或.qcow2),情况稍复杂,可能需要先使用kpartx或losetup工具映射出内部的分区,再分别挂载。但原理相通,都是将文件“伪装”成设备来处理。

3. umount命令的智慧:安全卸载与故障排除

卸载设备看似简单,但操作不当可能导致数据损坏。umount命令的核心在于“确保没有进程正在使用该文件系统”。

3.1 优雅卸载与强制卸载

标准的卸载命令是指定挂载点或设备名:

sudo umount /mnt
# 或
sudo umount /dev/sdb1

如果系统提示“umount: /mnt: target is busy.”,说明有进程正在访问/mnt或其子目录下的文件。此时,切勿强行拔掉设备。

第一步:找出“元凶” 使用lsof(列出打开文件)或fuser命令查看哪些进程在使用挂载点。

lsof /mnt

或者

fuser -vm /mnt

fuser命令会直接列出进程PID。你可以根据输出,关闭相关程序(如文件管理器、终端当前路径在该目录下、正在运行的脚本等)。

第二步:懒卸载(Lazy Unmount) 如果无法立即停止所有进程(例如,某个进程卡住了),可以使用懒卸载选项-l。

sudo umount -l /mnt

-l(lazy)会立即将文件系统从目录树中卸载,但实际的清理工作会等到所有进程都停止使用该设备后才在后台完成。这允许你立即收回挂载点,但设备在物理上还不能安全移除,直到没有进程访问为止。你可以通过mount命令查看设备是否还显示在列表中。

第三步:作为最后手段的强制卸载 在极少数情况下,如果懒卸载也不行,且你确认数据完整性可以牺牲(或设备本就是只读的),可以使用-f(force)尝试强制卸载。这非常危险,可能导致数据丢失,请慎用。

sudo umount -f /mnt

3.2 卸载整个挂载树

有时,你挂载了一个设备,然后又在它的挂载点下创建了新的绑定挂载(--bind)或挂载了其他设备。形成一个挂载树。直接卸载父挂载点会失败。此时,umount的-R(递归)选项可以一次性卸载整个子树。

sudo umount -R /complex/mount/point

这个命令会按照从子到父的顺序,递归卸载/complex/mount/point下的所有挂载点。

4. 自动化管理:/etc/fstab文件详解

每次开机都手动挂载硬盘太麻烦。/etc/fstab(文件系统表)就是用来定义系统启动时需要自动挂载的设备。理解并正确配置它是Linux系统管理的重要一步。

fstab的每一行定义了一个文件系统,包含6个字段,用空格或制表符分隔:

<设备标识> <挂载点> <文件系统类型> <挂载选项> <dump备份标记> <fsck检查顺序>

一个典型的配置行如下:

UUID=1234-5678 /data ext4 defaults,nofail 0 2

让我们拆解每个字段:

  1. 设备标识: 推荐使用UUID=或LABEL=,如前所述,这比/dev/sdX稳定。使用blkid命令获取这些信息。
  2. 挂载点: 必须是一个已存在的目录路径。
  3. 文件系统类型: 如ext4, ntfs-3g, vfat, xfs等。对于未知类型可以使用auto,但最好明确指定。
  4. 挂载选项: 多个选项用逗号分隔。defaults是个好起点。对于外置USB硬盘,务必加上nofail,这样即使开机时设备未连接,系统也不会卡在启动界面等待。
  5. dump备份标记: 通常设为0(禁用),表示dump备份工具忽略此文件系统。
  6. fsck检查顺序:
    • 0: 不检查。
    • 1: 根文件系统应设为1,表示最高优先级。
    • 2: 其他需要检查的文件系统设为2。系统会按数字顺序进行检查。

修改fstab后的测试与生效 修改/etc/fstab后,一个致命的错误是直接重启。如果配置有误,系统可能无法启动。安全的做法是:

# 1. 检查fstab语法是否有明显错误
sudo findmnt --verify
# 或
sudo mount -a

mount -a会尝试挂载fstab中所有配置了auto选项(defaults包含auto)的文件系统。如果这条命令没有报错,通常说明配置正确。如果报错,根据错误信息修正fstab文件。

注意:对于网络文件系统(如NFS)或需要凭据的文件系统(如加密卷),在fstab中配置可能需要额外的设置(如_netdev选项或使用凭证文件),否则可能导致启动超时。

5. 高级场景与疑难问题解决

掌握了基础和自动化,我们来看看更复杂的场景和那些让人头疼的报错。

5.1 挂载Windows的NTFS分区

Linux内核原生支持NTFS的读取,但写入支持需要额外的驱动(ntfs-3g)。现在大多数主流发行版都已预装ntfs-3g。

  • 查看是否支持写入:挂载后尝试创建一个文件。如果失败,可能需要安装ntfs-3g:sudo apt install ntfs-3g (Debian/Ubuntu) 或 sudo yum install ntfs-3g (RHEL/CentOS)。
  • 挂载命令:文件系统类型指定为ntfs-3g或ntfs(现代内核可能自动选择正确驱动)。
    sudo mount -t ntfs-3g /dev/sda3 /mnt/windows
    
  • 挂载选项:NTFS分区可能包含Windows的“快速启动”休眠文件,导致Linux挂载为只读。此时可以尝试强制挂载为读写(数据风险自担):
    sudo mount -t ntfs-3g -o remove_hiberfile /dev/sda3 /mnt/windows
    
    更安全的方法是在Windows中彻底关闭“快速启动”。

5.2 挂载网络共享(NFS/Samba/CIFS)

挂载网络文件系统是服务器和跨平台协作的常见需求。

  • NFS挂载:需要服务器端先配置好NFS共享。

    sudo mount -t nfs server_ip:/path/to/share /mnt/nfs_share
    

    常用选项包括soft/hard(超时处理)、intr(允许中断)、rsize/wsize(读写缓冲区大小)等,用于优化网络不稳定时的表现。

  • Samba/CIFS挂载:用于访问Windows共享或Samba服务器。

    sudo mount -t cifs //server_ip/share_name /mnt/smb -o username=your_user,password=your_pass,vers=3.0
    

    vers选项指定SMB协议版本(如1.0, 2.0, 3.0),需与服务器匹配。更安全的方式是将凭据写入一个仅root可读的文件,然后在选项中引用:credentials=/etc/smb.cred。

5.3 常见错误与解决方案

  • “mount: wrong fs type, bad option, bad superblock...” 这通常意味着文件系统类型指定错误,或者设备本身没有有效的文件系统(未格式化)。用blkid确认类型,或用fsck检查文件系统是否损坏。

  • “mount: /mnt: special device /dev/sdb1 does not exist.” 设备名错误。用lsblk重新确认设备标识符。也可能是USB设备未被系统识别,尝试重新插拔或检查dmesg | tail查看内核日志。

  • 挂载后普通用户无法读写 这通常是因为设备本身的文件系统权限,或挂载时使用了nosuid,nodev等限制性选项。对于vfat/exFAT等非Linux原生文件系统,它们不支持Linux权限模型,需要在挂载时指定uid和gid选项来设定所有者。

    sudo mount -o uid=1000,gid=1000,umask=022 /dev/sdb1 /mnt
    

    uid和gid可以通过id -u和id -g命令查看当前用户的ID。umask用于设置默认的文件权限掩码。

  • 卸载时设备忙(device is busy) 如前所述,使用lsof或fuser找出占用进程。一个容易被忽略的情况是:你的Shell当前工作目录就在挂载点或其子目录下。只需cd到其他目录再尝试卸载即可。

Linux的挂载机制是其强大和灵活的基石之一。从最初手动挂载U盘的手忙脚乱,到后来在fstab里熟练配置各种本地和网络存储,再到用bind挂载实现目录镜像、用overlay玩转容器存储,这个过程让我深刻体会到,理解这些基础工具是如何将离散的存储资源整合成一个统一命名空间的,是解锁更高级系统管理能力的关键。下次当你插入移动硬盘时,不妨别急着点图形界面上的图标,打开终端,用mount命令亲手完成这次“连接”,你会对“一切皆文件”有更实在的感触。

一个mutex引发的血案——3.10内核 mount -a hung住问题看到的ext4 lazyinit那些坑 本文分析了3.10内核在多盘大容量场景下mount挂载卡顿的问题。通过复现和分析发现,问题根源在于ext4文件系统的lazyinit机制在初始化inode表时需要获取li_list_mtx锁,而该锁在高并发场景下会成为瓶颈。实验表明,在3.10内核中,当ext4lazyinit进入慢速阶段后,mount和umount操作会因无法获取该锁而长时间阻塞。高版本5.4内核通过优化锁机制避免了这个问题。解决方案包括升级到5.4内核、在mkfs时禁用lazyinit功能或改用xfs文件系统。 阅读详情

相关推荐

30、Linux 磁盘与文件系统管理全解析

本文全面解析了Linux系统中的磁盘与文件系统管理,涵盖了常见文件系统类型(如jfs、xfs、gfs2)、交换空间的启用与禁用、/etc/fstab文件的配置、mount和umount命令的使用、通过mkfs创建文件系统,以及使用Cockpit进行可视化存储管理。同时提供了操作流程图、注意事项、常见问题解答和未来展望,帮助用户更好地掌握Linux存储资源管理的核心技能。

a1b2c的博客 36

linux命令:mount和umount

linux命令:mount和umount

qq_16268979的博客 7596

ESP-IDF 利用ESP32构建智能音乐播放器(一)---------- 实现SD卡MP3文件的解码与播放

本文详细介绍了如何利用ESP32和ESP-IDF开发框架,从零开始构建一个智能音乐播放器。文章重点讲解了如何通过SD卡模块读取MP3文件,并集成Helix MP3解码库进行软件解码,最终通过I2S接口驱动音频模块实现播放。内容涵盖硬件连接、软件环境搭建、核心解码与输出逻辑,为嵌入式音频开发提供了完整的实战指南。

weixin_29163797的博客 234

linux命令之mount(挂载)和umount(卸载)详解

linux命令之mount(挂载)和umount(卸载)详解,通过语法+实例详解,一篇带走。

全栈行动派的博客 1万+

生物信息学投稿避坑指南:如何根据影响因子和审稿速度选择最适合的期刊

本文为生物信息学研究者提供全面的期刊投稿策略,重点解析影响因子、审稿速度等关键指标,帮助选择最适合的期刊。涵盖算法开发类和应用型研究的投稿路径,分析不同出版社特点及开放获取的利弊,并提供投稿全流程优化建议,助力高效发表研究成果。

weixin_42652674的博客 380

手把手教你用ES8311芯片搞定智能音箱TTS播放(附完整寄存器配置清单)

本文详细介绍了如何使用ES8311音频编解码芯片实现智能音箱TTS播放功能,包括芯片特性、硬件连接、寄存器配置及调试技巧。通过完整的寄存器配置清单和实战经验,帮助开发者快速掌握ES8311在智能音箱中的应用,优化音频输出质量和低功耗设计。

weixin_42567497的博客 558

mount,umount命令详解

mount:用于挂载Linux系统外的文件 语法: mount [-hV] mount -a [-fFnrsvw] [-t vfstype] mount [-fnrsvw] [-t vfstype] [-o options] 设备 挂载点 参数: -V:显示程序版本 -h:显示辅助讯息 -v:显示较讯息,通常和 -f 用来除错。 -a:将 /etc/fstab 中定义的所有档案系统挂上。 -F:这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要.

IChen.的博客 1万+

解决国内网页无法加载reCaptcha的方法

科普: reCaptcha是Google公司的验证码服务,方便快捷,改变了传统验证码需要输入n位失真字符的特点。reCaptcha在使用的时候是这样的: 只需要点一下复选框,Google会收集一些鼠标轨迹、网络信息、浏览器信息等等,依靠后端的神经网络判断是机器还是人,绝大多数验证会一键通过,无需像传统验证码一样。但是reCaptcha使用了google.com的域名,这个域名在国内是被墙的。所以,也就导致了官网上无法注册/登录的问题,挡住了不少人入正的脚步。 解决办法: 【第一步】安装fir

调皮李小怪博客 25万+

Linux基础命令mount,umount详解

mount和umount是用于挂载和卸载文件系统的基础命令。以下是这两个命令的详细参数及用法示例。

qq_43114478的博客 2400

2、瑞丽-伯纳德对流的拉格朗日拟序结构(FTLE场结果对比)

在中,我简单比较了瑞丽伯纳德对流的FTLE场,但是因为粒子追踪采用的是欧拉方法,所以精度不是很高, 因此与文献中的结果还是有些差别。下面放一张文献中的FTLE场,参数与上篇文章是一致的,Ra = 1e8;Pr = 1;本文将详细的介绍如何得到这样的图片,好吧,其实也不是很详细。总之,先展示以下我个人的结果。可以看出,上图基本上与文献是一致的,因为这里展示的是瞬时场,所以当然不可能是完全一致,至于提取的LCS结构,我在下面也会提及。本着详细介绍的原则,所以这里我很良心的从流场计算开始介绍。

ambu1230的博客 1786

博图编写温度程序_s7 smart200的CRC-16校验程序

最近做一个小项目,项目中采用485自由口通讯方式,使用一台西门子S7 smart200对一台冷水机做多个状态和温度做监控,并能对冷水机进行启停控制,和参数设置,因为冷水机的协议不是标准modbus格式,所以要自己编写通信协议。其中要用到CRC校验,在网上找了些别人写的程序,基本上用不了。只能自力更生了。首先,找到CRC校验的算法,并理解。 下面就是我找的算法(这个网上很多),1....

weixin_39539761的博客 3062

linux mount / umount 命令的基本用法 及 开机自动挂载

格式:mount [-参数] [设备名称] [挂载点] 其中常用的参数有: -a 安装在/etc/fstab文件中类出的所有文件系统。 -f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系统。 -n 不把安装记录在/etc/mtab 文件中。 -r 讲文件系统安装为只读。 -v 详细显示安装信息。 -w 将文件系统安装为可写,为

lm_smile的专栏 3630

Oracle19c-集群节点重新添加

Oracle RAC集群在极端情况下,如硬件、主机,集群软件损坏,导致集群节点永久无法使用,需要对集群节点进行修复,删除节点集群信息并重新加入集群,以恢复集群原有的架构。 本文主要讲述一套两节点的Oracle19c RAC集群,节点一orcl01由于主机异常无法正常启动,在对主机进行重装之后,需要将orcl01节点重新加入集群的操作步骤。环境信息: 操作系统:Linux 7 RAC集群:19C 主机节点:orcl0...

sinat_36757755的博客 2352

Linux中mount命令

1. 用mount/umount能做什么? 不同的操作系统使用不同的文件系统格式。MS-DOS支持FAT16文件系统,Windows98支 持FAT16、FAT32文件系统,WindowsNT支持FAT16、NTFS文件系统, Windows2000则支 持FAT16、FAT32、NTFS三种文件系统格式,而Linux差不多支持所有的文件系统格式 ,但一般使用ext2或ext3文件系统。

ahubaoan的专栏 449

手把手教你用Kali Linux搭建vulntarget-a靶场环境(附详细配置步骤)

本文详细介绍了如何在Kali Linux环境下搭建vulntarget漏洞靶场,包括环境规划、虚拟化平台配置、靶机系统部署及安全工具链配置等关键步骤。通过实战演练,帮助网络安全从业者和初学者掌握专业级漏洞实验平台的搭建与管理技巧,提升安全测试能力。

weixin_29279101的博客 107

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

mount命令详解

 1. 用mount/umount能做什么?不同的操作系统使用不同的文件系统格式。MS-DOS支持FAT16文件系统,Windows98支持FAT16、FAT32文件系统,WindowsNT支持FAT16、NTFS文件系统, Windows2000则支持FAT16、FAT32、NTFS三种文件系统格式,而Linux差不多支持所有的文件系统格式,但一般使用ext2或ext3文件系统。很多用户

mrlly的 博客 736

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Linux mount/umount

1. 用Linux mount/umount能做什么? 不同的操作系统使用不同的文件系统格式。MS-DOS支持FAT16文件系统,Windows98支持FAT16、FAT32文件系 统,WindowsNT支持FAT16、NTFS文件系统,Windows2000则支持FAT16、FAT32、NTFS三种文件系统格式,而 Linux差不多支持所有的文件系统格式,但一般使用ext2或ext3文件系统。

青竹玉简 518

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

mount命令详解及常见问题汇总

一 、mount命令(用来挂载硬盘或镜像等) 用法:mount [-t vfstype] [-o options] device dir1、-t vfstype 指定文件系统的类型,通常不必指定。mount 会自动选择正确的类型。常用类型有:DOS fat16文件系统:msdosWindows 9x fat32文件系统:vfatWindows NT ntfs文件系统:ntfsWindows网络文...

weixin_30809173的博客 3267

Linux mount命令于的基本用法与umount的命令

为什么80%的码农都做不了架构师?>>> ...

weixin_34194551的博客 128

mount命令的基本用法完全解析

转载地址 :http://club.topsage.com/thread-201049-1-1.html   格式:mount [-参数] [设备名称] [挂载点] 其中常用的参数有: -a 安装在/etc/fstab文件中类出的所有文件系统。 -f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系统。 -n 不把安装记录在/etc/mtab 文件

wang1144的专栏 1372

mount常用参数

格式:mount [-参数] [设备名称] [挂载点]   其中常用的参数有:   -a 安装在/etc/fstab文件中类出的所有文件系统。   -f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系统。   -n 不把安装记录在/etc/mtab 文件中。   -r 讲文件系统安装为只读。   -v 详细显示安装信息。   -w 将文件系统安装为可写,为命令默认情况

云行雨施 品物流形 1617

mount参数详解

格式:mount [-参数] [设备名称] [挂载点] 其中常用的参数有: -a 安装在/etc/fstab文件中类出的所有文件系统。 -f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系统。 -n 不把安装记录在/etc/mtab 文件中。 -r 讲文件系统安装为只读。 -v 详细显示安装信息。 -w 将文件系统安装为可写,

Miles的专栏 2367

Linux磁盘管理

1)首先把虚拟机系统关机,然后单击“编辑虚拟机设置”选项,在弹出的界面中单击“添加”按钮,新增一块20G硬盘设备

qq_45892956的博客 1263

Linux磁盘管理解析 及 课后习题解答----工坊学习记录--2.3

Linux磁盘管理—常用命令 1.命令 df **-i:**表示查看inodes的使用状况,如使已用100%,即使磁盘空间有富余,也会提示磁盘空间已满。示例命令如下: **-h:**表示使用合适的单位显示,例如GB。示例命令如下: 2. 命令 du **-a:**表示全部文件和目录的大小都列出来。如果后面不加任何选项和参数,则只会列出目录 (包含子目录)的大小。如果du命令不指定单...

LiangZJ 2253

java linux常用命令_Linux常用命令

一、注销,关机,重启注销系统的logout命令1,Logout 注销是登陆的相对操作,登陆系统后,若要离开系统,用户只要直接下达logout命令即可:[root@localhost root]#logoutRed Hat Linuxrelease 9(Shike)Kernel 2.4.20.8 on an i686Login: ← 回到登陆的画面2,关机或重新启动的shutdown命令Shutdo...

weixin_31703351的博客 278
上一篇: FreeRTOS TLS实战:如何用线程本地存储解决多任务数据竞争问题(附代码示例)
下一篇: 手把手教你用君正T23N搭建双摄监控系统:从硬件选型到图像优化全流程
sql99
博客等级 码龄19年 168粉丝 1905原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值