Mac小白必看:如何安全禁用SIP保护(附详细步骤+常见问题解答)

如何禁用 Mac OS X 的系统完整性保护 Mac OS X 10.11 El Capitan 系统默认开启了完整性保护(System Intregrity Protection,SIP),所以即使是root帐户也无法修改系统目录中的文件,如/System/Library/LaunchDaemons/ssh.plist。如果需要修改受保护的文件,需要禁用保护功能,步骤如下:重启,并按住 CMD + R 进入 Recovery Mode打开 阅读详情

Mac系统安全机制深度解析:理解与操作SIP的完整指南

如果你刚接触Mac不久,可能对系统深处运行的一套名为“系统完整性保护”的机制感到既陌生又好奇。它像一位沉默的守护者,在你日常点击、安装、卸载应用时,默默地划定着安全边界。对于绝大多数用户而言,这套机制的存在感几乎为零,它安静地工作,确保你的系统核心不被意外或恶意篡改。然而,当你需要安装某些特定的开发工具、深度定制系统行为,或是排查一些极其罕见的软件兼容性问题时,这位“守护者”可能会成为你需要暂时沟通的对象。本文旨在为你彻底厘清SIP的来龙去脉,它不是一篇简单的“开关教程”,而是一次深入系统安全腹地的探索。我们将从设计哲学聊到实操细节,从风险权衡谈到恢复策略,无论你是谨慎的普通用户,还是需要突破限制的开发者,都能在这里找到清晰、安全的前行路径。

1. 系统完整性保护:Mac的基石安全设计

在早期的OS X系统中,root用户(也称为超级用户)拥有至高无上的权力,可以访问和修改系统中的任何文件,包括最核心的系统组件。这种设计为高级用户和开发者提供了极大的灵活性,但同时也带来了显著的安全风险:任何获得root权限的软件(通常通过要求输入管理员密码实现)都有可能对系统造成不可逆的破坏,无论是无意还是恶意。

苹果在OS X El Capitan中引入的系统完整性保护,其核心思想是一种“权限隔离”和“最小特权”原则的实践。它并非要剥夺用户的控制权,而是在root权限之上,建立了一个更细粒度的保护层。你可以这样理解:即使一个程序通过某种方式拿到了“万能钥匙”(root权限),SIP也在系统最关键的几个房间门口加装了特殊的防盗锁,没有对应的“特许指令”,依然无法进入。

具体来说,SIP默认保护以下核心区域:

  • /System
  • /usr (不包括 /usr/local)
  • /bin
  • /sbin
  • 预装的苹果应用(如Finder、Safari等)

这些目录和文件构成了macOS运行的基础。SIP将它们锁定,意味着即便是你以root身份在终端中执行命令,尝试删除或修改这些受保护路径下的文件,也会收到“Operation not permitted”的提示。这从根本上遏制了恶意软件、有缺陷的安装程序或用户误操作对系统造成的毁灭性影响。

注意:SIP的设计非常聪明,它并没有“一刀切”。用户自行安装的应用程序(存放在/Applications)、用户数据(~/)、共享支持文件(/Library)以及通过Homebrew等包管理器安装的软件(/usr/local)都不在保护范围内。这确保了日常使用的灵活性与系统核心的坚固性得以并存。

2. 为何需要考虑禁用SIP?理性评估使用场景

禁用SIP绝非日常操作,它相当于暂时移除了系统的一道重要防线。因此,在动手之前,必须明确你的需求是否真的需要走到这一步。绝大多数软件兼容性问题都可以通过更新软件、寻找替代方案或调整安装方式来解决。以下是一些经过严格评估后,可能确实需要禁用SIP的合法、合理场景:

2.1 深度系统定制与内核扩展安装 某些低级别的系统工具和驱动(称为内核扩展,或kext)需要向受保护的区域写入文件才能正常工作。例如,一些旧版的虚拟化软件、特殊的硬件驱动或系统级监控工具。随着苹果对安全性的要求日益严格,许多正规软件已转向无需禁用SIP的安装方式,但仍有少数遗留或特殊用途的工具存在此需求。

2.2 特定的开发与调试工作 在进行操作系统底层开发、安全研究或逆向工程时,开发者可能需要向/System目录注入调试代码、挂钩系统调用或修改核心组件行为。这类操作通常发生在受控的测试环境中,用于理解和分析系统工作原理。

2.3 安装某些特殊的系统增强软件 历史上,一些提供深度Finder增强、全局快捷键定义或窗口管理增强的第三方工具,会通过修改系统级进程来实现功能。随着SIP的推行和苹果API的完善,大多数主流工具(如BetterTouchTool, Alfred)早已适配,不再需要此操作。但仍需警惕,任何要求你禁用SIP才能安装的“系统优化”或“清理工具”,都应引起高度警觉,它们很可能是恶意软件或设计不规范的软件。

2.4 修复罕见的系统问题 在极少数情况下,某些错误的系统修改或损坏的系统文件可能导致循环错误,而SIP的存在会阻止你修复它。这时,在恢复模式下临时禁用SIP进行修复,是最后的手段。

为了帮助你更清晰地决策,可以参考以下场景评估表:

场景描述通常是否需要禁用SIP?推荐优先尝试的替代方案
安装来自知名开发者的应用程序(如Adobe CC, Microsoft Office)绝对不需要直接从官网或App Store下载安装。
使用Homebrew安装命令行工具(如wget, node)不需要Homebrew默认将软件安装到/usr/local,该目录不受SIP保护。
安装需要辅助功能权限的App(如剪贴板管理器)不需要在“系统设置”>“隐私与安全性”>“辅助功能”中授权即可。
安装旧版或非官方的硬件驱动程序可能需要首先检查硬件制造商官网是否有更新、已签名且支持当前macOS版本的驱动。
使用需要加载内核扩展的软件很可能需要在“系统设置”>“隐私与安全性”中,查看是否有允许加载的选项。这是比完全禁用SIP更安全的选择。
希望深度修改Finder或Dock的行为大多数情况不需要寻找使用合法macOS API的替代应用(如使用Finder扩展或Scripting)。

在决定继续之前,请务必问自己:我是否完全理解即将进行的操作?我是否已为可能的安全风险做好了准备(例如,仅在不连接网络的情况下临时禁用)?我是否有可靠的方法能立即恢复SIP? 如果对任何一点存疑,建议暂停。

3. 完整操作流程:进入恢复模式与管理SIP状态

如果你已确认需求,并接受了潜在风险,那么请严格按照以下步骤操作。整个过程需要在恢复模式下进行,这确保了系统在完全纯净、核心文件未被加载的状态下修改SIP设置。

3.1 准备工作

  1. 备份数据:使用时间机器(Time Machine)或你信赖的备份方案,完整备份你的Mac。这是最重要的安全措施。
  2. 关闭文件保险箱:如果你的Mac启用了文件保险箱(FileVault),在恢复模式下可能需要输入额外的恢复密钥才能访问磁盘,增加了复杂度。建议先进入系统,在“系统设置”>“隐私与安全性”>“文件保险箱”中暂时将其关闭,待操作完成后再重新开启。
  3. 记录关键信息:确保你知道自己Mac的管理员账户用户名和密码。

3.2 进入恢复模式

  1. 将你的Mac完全关机。
  2. 按下电源按钮开机,立即按住键盘上的 Command (⌘) + R 键不放。
  3. 持续按住,直到屏幕上出现苹果标志或旋转的地球仪(如果是从网络恢复),然后出现macOS恢复实用工具界面。此时可以松开按键。
  4. 在恢复实用工具窗口中,从顶部菜单栏选择“实用工具” > “终端”,打开命令行窗口。

3.3 查看与更改SIP状态 在终端中,你可以使用 csrutil 命令来管理SIP。这个命令是“系统完整性保护配置工具”的缩写。

  • 查看当前状态:在操作前,可以先确认SIP的当前状态。

    csrutil status
    

    你会看到类似以下的输出:

    System Integrity Protection status: enabled.
    

    如果显示 disabled,则表示SIP已被禁用。

  • 禁用SIP:

    csrutil disable
    

    执行后,终端会显示“Successfully disabled System Integrity Protection”或类似提示。请注意,此时更改尚未生效。

  • 启用SIP(用于恢复):

    csrutil enable
    

    同样,会收到成功的提示。

3.4 重启系统 在终端中执行重启命令,或点击屏幕左上角的苹果菜单选择“重新启动”。

reboot

关键点:只有在正常重启进入完整的macOS后,对SIP设置的更改才会真正生效。在恢复模式下使用csrutil status查看的状态,反映的是下一次正常启动时的状态。

4. 禁用SIP后的关键操作与风险管控

成功禁用SIP并重启进入系统后,你的Mac环境已经发生了变化。此时,你需要像对待一个“实验环境”一样谨慎行事。

4.1 执行你需要的特定操作 现在,你可以运行那些之前被阻止的安装程序,或者尝试在受保护目录中进行所需的修改。建议:

  • 离线操作:在进行敏感安装或修改时,最好断开网络连接,以减少潜在的网络攻击风险。
  • 目的明确:只做你计划中必须做的事情,避免在此期间进行其他非必要的系统探索或软件安装。
  • 记录操作:对修改了哪些文件、安装了哪些软件做好记录,以便后续追溯或清理。

4.2 严格的风险管控措施 禁用SIP期间,你的系统防御等级是降低的。务必采取以下措施:

  1. 立即重新启用SIP:一旦完成所需操作,应尽快按照第3章的步骤回到恢复模式,执行 csrutil enable 并重启。让系统处于SIP禁用状态的时间越短越好。
  2. 警惕软件来源:在此期间,绝对不要安装来源不明、信誉存疑的软件。恶意软件可能会利用此窗口期植入难以清除的根深蒂固的组件。
  3. 注意软件行为:观察系统是否有异常行为,如风扇狂转、无故卡顿、弹出不明提示等。
  4. 考虑专用环境:如果你的需求是长期且频繁的(例如某些开发测试),强烈建议在虚拟机(如VMware Fusion、Parallels Desktop)中配置一个用于测试的macOS环境,并在虚拟机中禁用SIP。这样可以将风险完全隔离在你的主力系统之外。

4.3 一个实操案例:安装旧版内核扩展 假设你需要为一个老式扫描仪安装驱动,该驱动以.kext文件形式提供,且必须放入/Library/Extensions(注意,此路径通常不受SIP保护,但某些特定安装器可能会要求禁用SIP)。

  • 第一步:在恢复模式禁用SIP并重启。
  • 第二步:在正常系统中,断开网络,运行驱动程序安装包。
  • 第三步:安装完成后,系统可能会提示需要重启并在“隐私与安全性”中批准内核扩展。根据提示操作。
  • 第四步:驱动正常工作后,立即回到恢复模式,重新启用SIP并重启。
  • 第五步:重新启用SIP后,该驱动通常仍可正常工作,因为批准加载的授权信息已被系统记录。这体现了SIP管理的灵活性。

5. 常见问题深度解答与故障排除

即使按照指南操作,你也可能会遇到一些意外情况。以下是几个最常见问题的解决方案。

5.1 禁用SIP后,系统无法启动或卡住怎么办? 这通常是因为安装的软件与系统核心产生了严重冲突。

  • 解决方案:重启进入恢复模式(Command + R)。在恢复模式下,你有几个选择:
    1. 尝试在终端中先重新启用SIP (csrutil enable),然后重启看能否正常进入系统。这能排除因SIP禁用本身导致的软件冲突。
    2. 如果仍不行,可以考虑从时间机器备份进行恢复。
    3. 作为最后手段,在恢复模式的“磁盘工具”中,可以尝试“急救”功能修复磁盘权限和目录结构(但这对SIP保护的文件无效)。

5.2 使用 csrutil status 查看状态,为什么和预期不符?

  • 在恢复模式下查看:显示的是下一次正常启动时的状态。
  • 在正常系统下查看:显示的是当前运行系统的状态。
  • 状态模糊:有时会看到 unknown 状态,这可能是NVRAM(存储此类设置的芯片)问题。可以尝试在恢复模式下重置NVRAM(对于Apple Silicon Mac,关机再开机即可;对于Intel Mac,开机时按 Option+Command+P+R)。

5.3 除了 enable/disable,csrutil 还有其他参数吗? 是的,csrutil 支持更精细的配置,这比完全禁用更为安全。例如:

csrutil enable --without fs

这个命令会启用SIP,但仅禁用文件系统保护(即允许修改受保护文件),而保留其他保护(如运行时保护)。你可以使用 csrutil enable --help 查看所有可用选项。对于高级用户,这种部分禁用的方式能更好地平衡需求与安全。

5.4 我忘记了管理员密码,无法在恢复模式下执行命令? 恢复模式下的终端默认以root身份运行,但某些操作(如修改启动盘上的SIP状态)需要验证文件所有者的凭证,即你日常使用的管理员账户密码。如果忘记密码:

  1. 对于使用Apple T2安全芯片或Apple Silicon的Mac,如果没有设置恢复密匙,这可能是一个严重问题,可能需要联系苹果支持。
  2. 对于旧款Intel Mac,可以尝试通过恢复模式中的“重设密码”实用工具来重设某个本地用户账户的密码。

操作SIP的整个过程,让我想起早年折腾系统时的情景,每一次深入底层都需要十足的谨慎。如今,随着系统安全架构的日益完善,需要我们去手动触碰这道防线的机会已经越来越少,这本身就是一个积极的信号。如果你在操作后成功完成了任务,我的建议是:立刻回去把SIP重新打开,然后彻底忘掉csrutil disable这个命令。把它当作一次特殊的、有明确目的的“系统手术”,手术做完,伤口愈合,生活照旧。让SIP继续在后台默默守护,而你,则可以安心享受Mac带来的高效与优雅。

Mac OS X 系统完整性保护(SIP)的禁用与启用全指南 本文详细解析了Mac OS X系统完整性保护(SIP)的核心机制与作用,并提供了在恢复模式下使用csrutil命令安全禁用或启用SIP的完整实操指南。文章强调了SIP作为核心安全防线的重要性,分析了开发者等用户需要操作SIP的具体场景,并警示了长期禁用可能带来的安全风险与系统不稳定问题。 阅读详情

相关推荐

Mac用户必看:如何安全禁用SIP保护(附csrutil详细操作指南)

本文详细解析Mac系统完整性保护(SIP)机制,提供安全禁用SIP的完整指南。通过csrutil工具的操作步骤和合理场景分析,帮助开发者和高级用户在保证系统安全的前提下完成必要操作,包括驱动开发、系统定制等专业需求。

weixin_29300931的博客 113

了解 macOS 中的系统完整性保护 (SIP):开启与关闭

系统完整性保护是 macOS 的一项安全功能,首次于 macOS El Capitan (10.11) 中引入。它限制了对系统文件和目录的访问权限,即使是具有 root 权限的用户也无法修改这些文件。这样可以防止恶意软件和未经授权的进程对系统进行损坏或篡改。系统完整性保护 (SIP) 是 macOS 中的一项重要安全功能,可以保护系统文件免受未经授权的访问和修改。虽然在某些情况下可能需要关闭 SIP,但建议只在必要时才这样做,并在完成相关任务后尽快重新启用 SIP,以确保系统的安全性和稳定性。

爱喝水程序员的博客 1万+

利用HFSS仿真优化圆极化微带天线的耦合馈电设计

本文深入探讨了利用HFSS仿真软件优化圆极化微带天线性能的关键方法。通过对比传统直接馈电与耦合馈电方式,详细阐述了耦合馈电在提升阻抗匹配、改善轴比带宽及增强设计鲁棒性方面的显著优势。文章结合FR4板材的实战案例,逐步演示了在HFSS中建立模型、进行参数扫描与圆极化性能优化的完整流程,为设计高性能、高纯度的圆极化天线提供了实用指南。

weixin_29233333的博客 547

Mac禁用SIP系统完整性保护(M1芯片)

为了更改安全性设量,请将Mac关机,然后按住电源按钮以启动"macOS恢复】错误提示,请根据以下教程解决!而用户在【3.正在载入启动选项】页面时就松开电源键了,在选项界面后续操作中,虽然是在恢复模式的界面,但是系统却认为不是在恢复模式。因为在进入恢复模式时,操作步骤为:1.长按电源键 2.长按直到启动选项出现 3.正在载入启动选项 4.选项界面。在终端内输入【csrutil clear】命令,然后按回车。接下来输入【csrutil disable】按回车即可!7.输入您的电脑密码,然后按下回车。

大白鲨X的专栏 2608

ESP8266 + MQTT :如何实现 LED 灯的远程控制

MQTT 是轻量级的、灵活的物联网消息交换和数据传递协议,致力于为 IoT 开发人员实现灵活性与硬件/网络资源的平衡。 NodeMCU 是一个开源的物联网平台。它使用 Lua 语言编程。该平台基于eLua开源项目,底层使用ESP8266 sdk 0.9.5版本。 在此项目中我们将实现 NodeMCU(ESP8266) 与 EMQ X Cloud 运营和维护的免费公共 MQTT 服务器远程控制 LED 灯,并使用 Arduino IDE 来对 NodeMCU ESP8266 进行编程。 EMQ X Cloud

emqx_broker的博客 3357

DANN实战:用Python手把手教你实现对抗迁移学习(附完整代码)

本文通过Python实战教程,手把手教你实现DANN对抗迁移学习模型,以解决领域偏移问题。文章详细解析了领域对抗神经网络的核心机制,包括梯度反转层和领域判别器的构建,并提供了从数据准备、模型搭建到训练评估的完整代码,帮助开发者快速掌握这一强大的无监督领域自适应技术。

net55的博客 317

SIP系统完整性保护怎么禁用?SIP系统完整性关闭方法

许多Mac用户反应,装了部分软件后提示无可装载的文件系统(或其他),那可能是sip系统完整性没有关闭。下面我们就来看一下如何关闭sip系统完整性。

weixin_50766720的博客 4520

DDR5内存命令真值表详解:如何正确解析JESD79-5标准中的关键指令

本文深度解析JESD79-5标准中的DDR5内存命令真值表,将其视为动态通信协议进行拆解。详细阐述了1-Cycle与2-Cycle命令的区别、Bank Group寻址机制以及模式寄存器(MR)操作流程,为硬件与固件工程师提供了从信号解析到系统调试的完整实战指南,是理解和优化高性能计算平台内存子系统的核心。

numpy6sculptor的博客 548

Mac开启关闭SIP(系统完整性保护)

查看SIP状态 在终端中输入csrutil status,就可以看到是enabled(开启)还是disabled(关闭)。 关闭SIP 重启MAC,按住cmd+R直到屏幕上出现苹果的标志和进度条,进入Recovery模式; 在屏幕最上方的工具栏找到实用工具(左数第3个),打开终端,输入:csrutil disable; 关掉终端,重启mac; 重启以后可以在终端中查看状态确认。 开启SIP 与关闭的步骤类似,只是在S2中输入csrutil enable即可。

DefineJ的博客 1万+

Immich vs Nextcloud照片管理实测:自建私有云相册到底选哪个?

本文深度评测了Immich与Nextcloud在私有云相册管理中的表现,涵盖核心功能、性能基准、本土化实践及进阶功能。Immich凭借微服务架构和AI优化在照片管理、移动端体验上表现优异,而Nextcloud则强在生态整合。文章还提供了Docker部署优化和国内网络适配方案,帮助用户根据需求选择最佳方案。

seed的博客 329

【高低温试验】试验报告模板

高低温循环试验,验证被测设备(DUT)在极端高温、低温环境下的性能稳定性、功能可靠性及安全性,确保其符合设计规范和相关标准(如GB/T 2423.1、GB/T 2423.2)。:验证设备在剧烈温度变化下的耐受能力(如-40℃↔+85℃,温变速率≥10℃/min)。低温测试标准:GB/T 2423.2-2008(温度-40℃,保持时间4小时):模拟高温高湿环境(如温度+60℃,湿度95%RH),测试防潮性能。

电路巫师把一切不可能变成不可能 1565

系统完整性保护 (SIP) 及其启用/禁用的详细指南

Apple 在 macOS El Capitan (10.11) 中引入了 SIP(系统完整性保护),旨在保护系统文件、核心扩展和某些进程免受恶意软件或用户误操作的干扰。通过 SIP,Apple 提供了更强大的系统安全保护,但也限制了用户对文件和进程的控制能力。(系统完整性保护),通过限制对系统文件、目录和进程的修改,保护 macOS 的完整性。要修改 SIP,您必须在「恢复模式」中执行操作,而不是在正常的 macOS 系统中。在终端中,您可以根据自己的需求,选择以下两种常见的 SIP 修改方式。

一萧烟雨任平生 8898

激光定位算法竞技场:hdl_localization与Cartographer/AMCL的横向技术解剖

本文深入对比了hdl_localization、Cartographer和AMCL三种激光定位算法的技术原理与性能表现。通过UKF-NDT融合、图优化和粒子滤波等核心技术,分析了各算法在结构化环境、动态环境和大尺度场景下的适应性。实验数据表明,Cartographer在全局一致性上表现最优,而AMCL在动态环境中更具鲁棒性。文章还提供了算法选型指南和参数调优技巧,为工程实践提供参考。

weixin_29062865的博客 365

如何在Mac上禁用SIP(系统完整性保护)

系统完整性保护(System Integrity Protection,SIP)是苹果在OS X El Capitan中引入的一项安全机制,旨在防止恶意软件修改系统文件,提升Mac系统的整体安全性。SIP限制了root用户对某些文件夹和进程的访问,即使在管理员权限下,也无法更改这些保护区域的内容。有时候我们安装一些开发工具或执行系统级调试的时候,可能需要禁用SIP。禁用SIP会降低系统的安全性,所...

fastboot 5782

Spring AI Alibaba实战训练营-16 NL2SQL (自然语言转 SQL)应用开发指南

本文介绍了一个基于AI的智能BI应用开发项目,主要实现自然语言转SQL(NL2SQL)功能,包含对话模块、MCP模块、向量数据管理模块。项目采用Spring AI Alibaba框架,集成通义千问大模型,支持内存向量库和AnalyticDB向量数据库两种存储方案。重点展示了chat模块的三个控制器实现:AnalyticNl2SqlController用于生产环境,SimpleChatController适用于开发测试,Nl2sqlForGraphController支持基于图的复杂对话流程。系统通过将业务知

program哲学 1587

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

SIP系统怎么禁用?Mac上 sip系统完整性关闭方法

许多Mac用户反应,装了部分软件后打不开,那可能是sip系统完整性没有关闭。系统完整性保护是 OS X El Capitan 及更高版本所采用的一项安全技术,能够帮助防止潜在恶意软件修改 Mac 上受保护的文件和文件夹。系统完整性保护可以限制 root 用户帐户,以及 root 用户能够在 Mac 操作系统的受保护部分完成的操作。那么SIP系统怎么禁用,SIP系统怎么关闭呢?下面小编为大家带来Ma...

mac666999的博客 7546

计算机控制技术及应用

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

sip系统完整性保护怎么禁用?Mac上 sip系统完整性关闭方法

许多Mac用户反应,装了部分软件后打不开,那可能是sip系统完整性没有关闭。系统完整性保护是 OS X El Capitan 及更高版本所采用的一项安全技术,能够帮助防止潜在恶意软件修改 Mac 上受保护的文件和文件夹。系统完整性保护可以限制 root 用户帐户,以及 root 用户能够在 Mac 操作系统的受保护部分完成的操作。那么SIP系统怎么禁用,SIP系统怎么关闭呢?下面小编为大家带来Ma...

wuxuanyi531的博客 5746

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Mac开发者必看:如何安全禁用SIP保护来修改系统文件(附状态检查命令)

本文为Mac开发者详细解析了系统完整性保护(SIP)机制,并提供了安全禁用与重新启用SIP的完整操作指南。文章重点介绍了通过恢复模式使用csrutil命令进行状态检查、禁用和启用的具体步骤,强调了操作前的备份准备与完成后的风险管控,是进行系统级文件修改和内核扩展开发的必备参考。

weixin_29291573的博客 526

sip是什么?Mac电脑如何关闭sip?关闭系统完整性保护SIP的方法教程

SIP 全称为「System Integrity Protection」即「系统完整性保护」,是 OS X El Capitan 时开始采用的一项安全技术,SIP 将一些文件目录和系统应用保护了起来。但这会影响我们一些使用或设置,比如:更改系统应用图标、终端操作系统目录文件提示「Operation not permitted」、Finder 无法编辑系统目录里的文件。 安装软件的时候很多用户遇到如下情况:“xxx”因为出现问题而无法打开。请与开发者联系,以确定“xxx”可以配合Macos版本使用。您可能需要

weixin_47636522的博客 2万+

Mac终端operation not permitted问题、禁用和启用SIP(系统完整性保护)

这是因为一些mac用户在升级系统之后,电脑启用了SIP(System Integrity Protection),增加了rootless机制,导致即使在root权限下依然无法修改文件,在必要时候为了能够修改下面的文件,我们只能关闭该保护机制。

cygqtt的博客 6745

Mac M1用户必看:关闭SIP系统完整性保护的完整步骤与常见问题解答

本文为Mac M1用户提供了关闭SIP系统完整性保护的完整步骤与深度指南。详细解析了在Apple Silicon芯片Mac上进入恢复模式、使用csrutil命令禁用SIP的正确方法,并涵盖操作前后的风险提示、常见问题排查以及完成任务后重新启用SIP的安全实践,帮助高级用户和开发者在必要时安全地进行系统级操作。

sand8的博客 287

在Mac OS X上禁用系統完整保護(SIP)的辦法

Mac OS X上禁用系統完整保護(SIP)的辦法

elim189的博客 677

解决从OpenCore引导的Mac OS Monterey 12.5 系统SIP禁用问题

本文方法适用于使用OpenCore引导的Mac系统,列出了本人实际调整黑苹果的过程中遇到的关于禁用SIP的相关问题,并就这些问题提出一些解决办法,希望对一些没有Apple设备但希望体验到Mac OS系统的朋友有一定帮助。......

qq_43476485的博客 1万+

禁用Mac SIP – System Integrity Protection

本页目录 什么是SIP?查看SIP状态操作SIP 什么是 Recovery OS.进入Recovery OS.非M1芯片电脑M1芯片电脑操作SPI进入安全模式什么是SIP?全名:System Integrity Protection,中文是:系统完整性保护。它的主要功能是保护系统文件及目录,以免这些文件及目录被没有特定权限的进程修改。如果你是Docker用户,在Mac系统上,你必须关闭SIP才能正...

weixin_45129599的博客 3767
上一篇: Ubuntu20.04下Xenomai3.2.1安装避坑指南:从内核编译到实时性测试全流程
下一篇: Flutter开发新手必看:Dart SDK未配置报错的3种解决方法(附截图)
postgres8guard
博客等级 码龄4年 62粉丝 1443原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值