Docker 又吃了我 40GB 硬盘:从诊断到清理的完整指南

C盘清理终极指南:从休眠文件到Docker,一次释放几十GB 磁盘空间管理是Windows系统维护的核心技能,而C盘空间不足往往源于休眠文件、虚拟内存、系统更新残留等隐藏大户。这些文件虽不显眼,却随着使用不断膨胀,导致传统磁盘清理收效甚微。理解各类系统文件的生成机制与清理原理,是安全释放空间的前提。对于办公用户,合理调整休眠与虚拟内存、重定向用户目录即可换取数十GB;而开发者还需关注WSL虚拟磁盘、Docker镜像及包管理器缓存的定期清理。通过命令行工具与计划任务,可将清理流程自动化,实现长效维护。本文从系统级瘦身到开发者场景,提供一套完整的C盘清理与预防方案,帮助读 阅读详情

摘要:Docker 的磁盘占用是"只增不减"的——镜像、容器、卷、构建缓存一层层堆叠,直到你的 Mac 弹出"磁盘空间不足"。本文提供一套系统化的 Docker 磁盘空间管理方案:先用 SpacePeek 快速定位 Docker 目录的大小和位置,再用 docker system df 分析各环节的精确占用,最后按安全等级分级清理(从悬空镜像到未使用卷到构建缓存)。每一步附命令和预期释放量。文末给出一个防复发的日常维护脚本。

本文信息:基于 macOS 15.0 Sequoia / Docker Desktop 最新版 / 2026 年 7 月实测。


一、问题背景

Docker 是所有 Mac 程序员的第一大隐形磁盘杀手

如果你是一个用 Docker 的程序员,你的 Mac 硬盘上大概率有一个 20-50GB 的隐形黑洞。它不是你的项目代码,不是你下载的安装包——它是 Docker 的镜像、容器、卷、构建缓存。

最糟的是,Docker 只增不减。你 docker pull 一个新镜像、docker build 一个 Dockerfile、docker run 一个测试容器——每一次操作都在堆叠数据。当你不 pull、不 build、不 run 的时候,这些数据仍然留在你的硬盘上。

这篇文章的目标:用两个诊断工具 + 几行命令,把你的 Docker 磁盘占用从"不知道该删什么"变成"知道自己删了什么、还剩什么"。

阅读收益

  • 知道 Docker 数据到底存在你 Mac 的哪个角落
  • 掌握 docker system df 的精读方法
  • 分级清理指南——从最安全的到最彻底的
  • 一个防复发的日常维护方案

二、诊断:先搞清楚 Docker 吃了多少


第 1 步:用 SpacePeek 找到 Docker 的"老巢"

Docker Desktop for Mac 的数据存储在以下路径:

~/Library/Containers/com.docker.docker/

这个路径有两个特征:第一,大部分 Mac 用户从来不知道 Library 文件夹的存在;第二,Docker 的虚拟机磁盘镜像文件(Docker.raw)只增不减——即使你删除了所有容器和镜像,这个文件也不会自动缩小。

操作:

  1. Finder → ⇧⌘G → 输入 ~/Library/Containers/com.docker.docker/ → 回车
  2. 选中这个文件夹 → 按空格(需要装 SpacePeek)

你会看到:总大小 20-60GB,饼图里 Data/vms 子文件夹通常占了 90% 以上。这就是 Docker 的虚拟机磁盘镜像。

如果你没有 SpacePeek,右键 → 显示简介也能看到大小,但没有可视化饼图和子目录占比。在清理 Docker 这块,SpacePeek 的作用是让你确认 Docker 确实是当前磁盘占用的主要元凶——而不是凭感觉猜测。
在这里插入图片描述


第 2 步:用 docker system df 精确定位

SpacePeek 告诉你"Docker 在吃你的硬盘",docker system df 告诉你"Docker 的内部构成是怎样的"。

docker system df

输出示例:

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          18        3         12.4GB    9.8GB (79%)
Containers      8         2         1.2GB     856MB (71%)
Local Volumes   5         1         3.6GB     2.8GB (78%)
Build Cache     24        0         4.8GB     4.8GB (100%)

精读这个表:

行含义重点关注
Images18 个镜像,3 个在使用,12.4GB 总额RECLAIMABLE 79% → 可回收的旧镜像占了 9.8GB
Containers8 个容器,2 个在运行停止的容器可以清
Local Volumes5 个卷,1 个在挂载未挂载的卷是"僵尸数据"
Build Cache24 条,全都不在使用100% RECLAIMABLE → 构建缓存全可以删

最常被忽略的是 Build Cache——每次 docker build 都会生成中间层缓存。你的 Dockerfile 改过 10 次,就有 10 版的中间层缓存堆在那里。100% 可回收。


第 3 步:深挖——看哪些镜像最大

docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}" | sort -k3 -rh | head -10

输出示例:

REPOSITORY    TAG       SIZE
python        3.11      1.02GB
node          20        1.09GB
postgres      15        412MB
<none>        <none>    380MB    ← 悬空镜像,可以删
<none>        <none>    260MB    ← 悬空镜像,可以删

<none>:<none> 的镜像叫"悬空镜像"(dangling images)——你 pull 了一个新版本的镜像,旧版本的 tag 被移除,但它还在你的硬盘上。


三、清理:按安全等级分级操作


🟢 Level 1:最安全(推荐每月执行一次)

只删除明确不再使用且可重建的资源。零风险。

# 删除悬空镜像(<none>:<none>)
docker image prune

# 删除所有停止的容器
docker container prune

# 删除构建缓存
docker builder prune

# 删除未使用的网络
docker network prune

预期释放:3-8 GB

为什么这些是安全的:悬空镜像已经没有任何 tag 引用;停止的容器没有进程在跑;构建缓存在下次 build 时自动重建;网络配置不占什么空间,但清一下没坏处。


🟡 Level 2:中度清理(推荐每季度执行一次)

删除所有未被容器使用的镜像。镜像可以在需要时重新 pull。

# 删除所有未被任何容器使用的镜像
docker image prune -a

预期释放:5-15 GB

风险:如果你以后要基于某个镜像启动容器,需要重新 docker pull——有网络就能恢复。但如果你在飞机上或者没有 Wi-Fi 的环境,pull 一个 1GB 的镜像可能很慢。所以在执行之前,确保你知道哪些镜像你可能在近期会用到。

先在执行前看一眼会被删什么:

docker image prune -a --dry-run    # 列出会被删除的镜像,不会真删

🔴 Level 3:深度清理(磁盘红警时使用)

删除所有未使用的镜像、容器、卷、构建缓存。

docker system prune -a --volumes

预期释放:15-30 GB

⚠️ 注意 --volumes:这个参数会删除所有未被任何容器挂载的卷。如果你有用 docker volume create 手动创建的卷,且当前没有容器挂载它——它会被删。如果你不确定有没有重要的卷数据,先用以下命令看一眼:

docker volume ls                # 列出所有卷
docker volume ls -f dangling=true  # 只看未被挂载的卷

如果 dangling=true 列出的卷你都不认识——安全删。如果有你认识的卷名,先用 docker volume inspect 卷名 确认它挂载了什么路径。


🛑 终极方案:重置 Docker(Docker.raw 已膨胀到 50GB+)

症状:你已经清理了所有镜像、容器、卷,但 docker system df 显示的总占用仍然很高。这是因为 Docker Desktop for Mac 使用的虚拟机磁盘镜像文件(Docker.raw)不会因为你删除了内部数据而缩小。

验证:

ls -lh ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw

如果这个文件 30GB+,但你 docker system df 显示实际占用只有 5GB——说明 25GB 是 Docker.raw 的"空洞"(曾经被占用过的空间但文件没有压缩回去)。

唯一方式:重置 Docker:

Docker Desktop → Troubleshoot(故障排除)→ Reset to factory defaults(恢复出厂设置)。

⚠️ 这会删除所有容器、镜像、卷——相当于重装 Docker。执行之前:

  1. 确保你的代码不依赖于任何 Docker 卷中的数据
  2. 确保你知道如何重新 pull 你需要的镜像
  3. 确保你没有正在运行的、不可中断的容器

四、清理后的诊断:确认效果

# 清理前后各跑一次,对比
docker system df
清理前:
Images   18  3   12.4GB  9.8GB (79%)
清理后:
Images   5   3   3.2GB   0B (0%)

回收了 9.2GB 镜像空间。

同时,回到 Finder,选中 ~/Library/Containers/com.docker.docker/ → 按空格。对比清理前后的 SpacePeek 饼图——如果 Docker.raw 文件本身已经膨胀,饼图中 Data/vms 占比不会显著下降(这就是 Level 3 解决不了的,需要终极方案的"重置")。


五、预防:别再让 Docker 偷偷膨胀

日常维护脚本(建议设为每月执行一次的定时任务)

#!/bin/bash
# docker-monthly-cleanup.sh

echo "===== Docker 磁盘使用情况 ====="
docker system df

echo ""
echo "===== 开始清理 ====="

# Level 1:安全清理
echo "→ 清理悬空镜像..."
docker image prune -f

echo "→ 清理停止容器..."
docker container prune -f

echo "→ 清理构建缓存..."
docker builder prune -f

echo "→ 清理未使用网络..."
docker network prune -f

echo ""
echo "===== 清理后 ====="
docker system df

两个好习惯

习惯命令
每次装新镜像后看一眼磁盘docker system df
docker build 时加 --no-cache 避免不必要的缓存docker build --no-cache -t myapp .(只在需要时用)
拉镜像时指定平台,避免拉多余的 multi-arch 镜像docker pull --platform linux/arm64 node:20

六、总结

三点核心

  1. Docker 的磁盘膨胀是"悄无声息"的。你不会收到通知、不会看到弹窗。直到有一天你的 Mac 弹出"磁盘空间不足"——彼时 Docker 可能已经吃了 30-50GB。用 docker system df 和 SpacePeek 的 Finder 文件夹扫描组合,每个月检查一次。

  2. 清理有安全梯度。Level 1(悬空镜像 + 停止容器 + 构建缓存)毫无风险,建议每月执行。Level 2(未使用的镜像)需要确认你近期可能用到的镜像,但可以重新 pull。Level 3(--volumes)需要确认卷数据。终极方案(重置 Docker)是最后手段。

  3. Docker.raw 不会自动缩小是这个品类最大的设计缺陷。你删了所有镜像和容器,Docker.raw 还是 30GB。这不是你的问题,是 Docker Desktop 的问题。定期检查这个文件的大小,必要时刻直接重置。

涉及的工具与命令

工具作用获取
SpacePeekFinder 中查看 Docker 文件夹大小和分布App Store 免费
docker system dfDocker 内部各环节占用分析Docker 自带
docker system prune -a --volumes彻底清理Docker 自带

测试环境:macOS 15.0 Sequoia / Docker Desktop 26.x / 2026 年 7 月


你的 Docker 占用了多少硬盘空间?评论区晒一下 docker system df 的结果——我来看看谁的 Build Cache 最离谱。

C盘爆红怎么办?从诊断到自动化的系统空间清理完整指南 在Windows系统日常维护中,磁盘空间不足是高频问题之一,尤其C盘可用容量告急时,往往由临时文件、系统更新残留、软件缓存与个人文件混存共同导致。理解空间占用原理,是进行安全清理的前提。通过系统自带的存储感知、磁盘清理工具以及命令行手段,可以快速释放基础垃圾;借助磁盘分析工具则能定位深层大文件,实现精细化迁移或删除。这一整套流程不仅解决当前告警,更能通过计划任务固化为定期执行的自动化运维方案,适用于个人电脑与批量维护场景。本文将从空间诊断、系统自带清理、命令行操作、应用迁移到定时任务,完整梳理C盘从飘红到恢 阅读详情

相关推荐

ROS日志磁盘占用检查:从‘Usage is <1GB’告警到高效清理实战

本文详细解析了ROS日志磁盘占用检查机制,从常见的'Usage is <1GB'告警入手,揭示了日志管理的潜在问题与解决方案。通过实战案例,介绍了如何精准诊断日志占用、安全清理文件、配置预防性措施以及实施高级日志分级存储策略,帮助开发者有效管理ROS日志磁盘空间,提升系统稳定性。

weixin_30800807的博客 359

Docker no space left on device 根因诊断与安全清理指南

Docker存储空间不足(no space left on device)是容器化运维中最高频的系统级故障,其本质源于Linux文件系统的双重资源约束:数据块(blocks)耗尽或索引节点(inodes)耗尽。前者表现为磁盘使用率100%,后者则常被忽略——如Node.js构建生成海量小文件、PHP session日志堆积等场景下,df -H显示空间充足但df -i已达100%。准确区分二者是排障前提,而docker system df -v输出中的RECLAIMABLE字段才是判断可安全释放空间的关键依据

weixin_30367169的博客 385

AI辅助诊断eNSP AR启动40错误:从虚拟化冲突到精准排查

虚拟化技术是网络模拟与测试的基石,它通过在单一物理硬件上创建多个隔离的虚拟环境,为网络设备仿真提供了运行平台。其核心原理是利用虚拟机监视器(Hypervisor)对CPU、内存和I/O资源进行抽象与调度。这项技术的价值在于能大幅降低实验成本、提升部署灵活性,广泛应用于网络工程教学、方案验证及开发测试等场景。然而,虚拟化环境常因组件冲突、资源竞争或配置不当引发故障,例如在运行华为eNSP模拟器启动AR路由器时,典型的“错误代码40”便常源于VirtualBox与Windows Hyper-V的虚拟化平台冲突,

cnvdkx2837的博客 432

Windows C盘爆满手把手清理攻略:不装第三方软件也能释放几十GB

磁盘空间管理是Windows系统日常维护中的基础议题,尤其当系统盘(C盘)空间不足时,不仅影响运行速度,还可能导致系统更新失败或软件无法正常安装。从根本上说,C盘空间被占用主要来自临时文件、系统更新缓存、休眠文件、虚拟内存、开发环境缓存以及虚拟磁盘镜像等可再生或可迁移的数据。通过理解这些文件的生成原理,利用系统自带的存储感知、磁盘清理工具以及少数如WizTree之类的轻量扫描程序,即可精准定位并安全删除无用数据。这一技术手段无需额外安装全家桶软件,适用于办公电脑、开发机和个人PC等各类场景。当系统盘剩余空间

weixin_30394669的博客 376

Ubuntu零基础入门到精通【9.10讲】:Ubuntu 磁盘空间排查与清理:从“磁盘满了“到系统稳定运行的完整实战指南

🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。该本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。

**My Coding Family** 1564

优化问题-半正定规划(Semi-Definite Program, SDP)

半正定规划(Semi-Definite Program, SDP)在MIMO无线通信相关的信号处理中具有广泛的应用,在某些场景可以分析证明SDP的得到的解释原问题的全局最优化或者次优解。

qq_33668008的博客 1万+

C盘爆满不用愁:Windows磁盘空间清理与系统优化完整指南

磁盘空间是Windows系统稳定运行的基础资源,当系统盘空间告急时,盲目使用第三方清理工具往往带来安全隐患。理解空间占用原理是有效管理磁盘的前提,Windows中的休眠文件、页面文件、更新缓存及WinSxS组件存储都可能成为容量黑洞,借助系统自带磁盘清理、存储感知及PowerShell脚本可精准定位并安全释放空间。对于开发环境与批量维护场景,命令行工具和自动化脚本能大幅提升效率,而迁移用户目录、调整默认保存位置或合理分区扩容则是长期保持可用空间的关键策略。从日常办公到开发运维,建立可持续的维护节奏,才能让C

weixin_33904756的博客 415

Ubuntu桌面消失?可能是lightdm配置在捣鬼:详细解析/etc/lightdm.conf的优先级机制与实战修复

本文详细解析了Ubuntu系统因lightdm显示管理器配置错误导致桌面消失的问题。通过分析/etc/lightdm.conf的优先级加载机制,提供了从systemctl诊断、调试模式运行到实战修复配置语法错误(如缺失[Seat:*]组)的完整方案。文章还探讨了在系统无法启动时使用chroot或恢复模式进行高级救援,并对比了lightdm与gdm3在NVIDIA驱动环境下的不同表现,帮助用户高效恢复图形界面。

weixin_29313547的博客 420

告别C盘爆满:Windows磁盘清理与预防实战指南

磁盘空间不足是Windows用户最常遇见的性能瓶颈之一。系统更新残留、浏览器缓存、休眠文件与虚拟内存等隐性占用,往往在不经意间塞满C盘。理解这些系统文件的生成原理,借助磁盘分析工具定位大文件,并通过系统自带清理功能与存储感知机制,可安全释放数十GB空间。针对开发者,Docker镜像、WSL虚拟磁盘和npm缓存等专项回收同样不可忽视。结合自动化清理脚本与持久化预防策略,可让电脑长期保持流畅。本文提供一套从诊断、清理到长期维护的完整实践指南,适用于各类Windows版本。

weixin_33947521的博客 582

win10离线安装.NetFrameWork3.5出现0x800F081F解决办法。

由于公司开发环境是内网,并且安装arcgis10.2又需要.NetFrameWork3.5的环境,安装.NetFrameWork3.5的又总是报错“0x800F081F”找不到源文件。折腾了两天总算解决了。 首先我们能在网上搜索到的教程,你一定看到过这样的教程,就是使用下面的命令来进行安装。 dism /online /Enable-Feature /Featu...

AIGIS的博客 1万+

基于FPGA的PCIe核系列:FPGA root模式生成工程例子分析(1)

一、 PCIE系统架构 1.1 PCIE分层结构 PCIE结构 1.2 TLP包 四种TLP类型。 Memory (内存空间操作) IO (IO空间操作) Configuration (配置操作) Message (信息操作) 四种类型TLP,如果有需要响应,称为Non-Posted TLP,如果没有需要响应,称为Posted TLP。 TLP包类型 1.2.1 TLP结构 TLP数据格式 1.2.2 Header各个字段的含义 Header格式 ...

huangshanhu的博客 3436

Windows原生命令深度清理C盘:不装软件释放十几GB

随着日常使用和系统更新,电脑磁盘空间不足成为常见困扰,尤其是系统盘C盘。许多用户习惯安装第三方清理软件,却常带来后台进程和弹窗广告。实际上,Windows内置的命令行工具提供了更安全、可控的解决方案。通过cleanmgr、DISM、powercfg等原生命令,可以清理临时文件、压缩WinSxS组件库、关闭休眠文件,从而有效释放磁盘空间。理解空间占用原理后,结合磁盘清理和更新缓存处理,既能快速解决C盘爆红问题,又能避免误删系统文件。本文介绍一套可复用的命令式清理实践,帮助开发者和普通用户在不安装额外软件的情况

weixin_30896511的博客 299

YoloV8改进策略:轻量级的CloFormer助力Yolov8在速度和精度上实现双双提升

CloFormer是清华大学在今年发表的轻量级主干网络,引入了AttnConv,一种attention风格的卷积算子。所提出的AttnConv使用共享权重来聚合局部信息,并配置精心设计的上下文感知权重来增强局部特征。AttnConv和普通attention的结合使用池化来减少CloFormer中的FLOPs,使模型能够感知高频和低频信息。这篇文章主要向大家讲解如何将CloFormer加入到YoloV8中。论文链接:https://arxiv.org/abs/2303.17803v5。

m0_47867638的博客 4312

WSL2虚拟磁盘只涨不跌?从ext4.vhdx原理到压缩迁移的完整清理指南

虚拟化技术为开发环境带来便利的同时,也埋下了存储管理的隐患。WSL2作为Windows上流行的Linux子系统,其底层采用动态扩展的vhdx虚拟磁盘文件,这种只增不减的机制容易导致C盘空间被无声吞噬。理解ext4.vhdx的文件结构与扩容特性,是解决存储焦虑的第一步。通过诊断磁盘占用、清理包管理器缓存、限制日志大小,配合diskpart压缩或迁移至其他分区,可有效释放被占用的存储空间。对于长期使用容器技术或频繁编译内核的开发者,合理的配置优化与安全基线同样重要。本文从技术原理到工程实践,梳理出一套适用于日常

weixin_28739079的博客 216

RTK_ROS_导航(1): GNSS里程计

1. RTK 配置 4G CORS + 4G 网络 + 户外有信号,不能实现RTK,就恢复出厂设置 输出信息包含(一般需要三个同时打开): GAPPA:包含位置信息 GPVTG:包含速度信息 GPHDT:包含定向的朝向信息 2. ROS驱动 驱动安装sudo apt install ros-noetic-nmea-navsat-driver 运行,需要修改该功能包的启动端口,会自动解析上面的3个RTK语句信息roslaunch nmea_navsat_driver nmea_serial_d

旋风小短腿 4266

计算机视觉与深度学习 | 低照度图像增强算法综述(开源链接,原理,公式,代码)

激光雷达与可见光融合已在自动驾驶夜间感知中取得初步进展。当前主观评价(如MOS)与客观指标(PSNR/SSIM)常存在分歧,需建立感知质量统一的评估标准。轻量化设计仍是移动端部署的关键。WaveletMamba的线性复杂度模型为实时处理提供新思路。实验表明,该方法在PSNR指标上超越SOTA方法2.1dB,推理速度提升3倍。是传统方法的基石,由Edwin Land提出。开发如事件相机等新型传感器,其高动态范围特性可从根本上缓解低照问题。该方法在保留结构的同时抑制噪声,计算复杂度仅为。

尘世冰封的专栏 1366

2026年8GB内存笔记本还值得买吗?卡顿真相与升级指南

内存容量是决定笔记本流畅度的核心硬件指标之一。操作系统、浏览器多标签页、办公软件与视频会议工具的后台驻留,都会持续消耗物理内存。当内存接近满载时,系统会启用虚拟内存将数据交换到硬盘,由此引发卡顿、掉帧甚至软件闪退。8GB内存在轻量级固定场景下仍可胜任,但面对多任务办公、代码开发、数据处理和本地AI应用则明显力不从心。判断是否需要升级,需结合使用习惯、内存是否板载以及扩展插槽情况来综合评估。若机器支持更换内存条,加装同规格产品可显著改善体验;若为板载不可扩展设计,则换机时建议直接从16GB起步。理性看待内存占

weixin_33912638的博客 345

R语言线性混合模型(LMM)分析

它将数据表示为固定效应和随机效应的线性组合,其中固定效应表示总体均值的影响,随机效应表示个体间的随机差异。LMM的目标是通过最大似然估计或最小二乘估计来估计模型中的固定效应和随机效应的参数。LMM结合了固定效应和随机效应,能够同时考虑个体间和个体内的变异,并适用于具有相关性的数据。目前在使用LMM的R语言包中,较常用的是lme4和nlme包,它们提供了丰富的函数和工具来拟合和分析线性混合模型。面板数据分析:LMM适用于分析具有面板结构的数据,如经济学中的面板数据或教育研究中的学生评估数据。

走向CTO的路上... 2972

Windows C盘空间治理方法论:开源工具精准清理与长效监控

C盘空间不足是Windows系统最常见的性能瓶颈,其本质是磁盘空间构成复杂、冗余数据隐蔽且动态增长。理解NTFS元数据、卷影副本、WSL2虚拟硬盘等底层机制,是实现精准治理的前提;借助WinDirStat、PatchCleaner、BleachBit等高星开源工具链,可分层诊断系统级冗余、应用缓存失控与虚拟化膨胀;通过PowerShell自动化脚本与WMI查询,支撑可验证、可追溯的清理决策,显著提升空间释放效率与系统稳定性。该方案适用于高校IT支持、开发者运维及普通用户日常维护场景,兼顾救急响应与长期健康管

weixin_34332905的博客 432

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

计算机控制技术及应用

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

wan2.1-vae镜像轻量化:去除冗余依赖后体积压缩40%的Docker优化实践

本文介绍了wan2.1-vae镜像通过Docker优化实现体积压缩40%的实践。该轻量化镜像可在星图GPU平台上实现自动化部署,为用户提供一个高效的AI图像生成环境,能够快速将文本描述转化为高质量图片,适用于内容创作、设计辅助等场景。

weixin_42451850的博客 302

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

HeyGem.ai 50系列显卡适配:RTX5090极速部署指南

你是否正面临这样的困境:花费重金购入的RTX5090显卡,却在部署开源数字人项目时频频碰壁?驱动不兼容、容器启动失败、显存分配错误等问题层出不穷。本教程将提供一套经过实战验证的完整解决方案,让你的RTX5090充分释放算力,实现HeyGem.ai数字人服务的高效部署。 读完本文后,你将获得: - 针对RTX5090优化的Docker容器配置方案 - 显存高效利用的参数调优技巧 - 常见部署错误的...

gitblog_00294的博客 1325

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Windows C盘清理的5个安全方法:告别误删蓝屏

Windows系统盘清理不是简单删除文件,而是理解操作系统空间管理机制的技术实践。C盘包含系统核心文件、注册表、用户配置与缓存等多层耦合结构,盲目‘瘦身’易导致启动失败(如0xc0000225错误)、UWP应用崩溃或更新中断。真正有效的清理需基于三类可操作空间:可释放的冗余缓存(如Windows更新残留、缩略图数据库)、可迁移的用户数据(通过符号链接重定向Documents/Pictures)、可优化的系统组件(如WSL2虚拟硬盘压缩、休眠/页面文件调优)。这些方法兼顾稳定性与空间效率,适用于Win10/W

weixin_33910759的博客 534

Ubuntu硬盘健康诊断:smartmontools实战指南与IO性能优化

硬盘健康监测是Linux系统稳定运行的基础能力,其核心在于通过SMART技术获取磁盘固件层的物理状态数据。SMART并非单一指标,而是涵盖温度、备用块余量、写入寿命、介质错误等多维参数的诊断体系;在Ubuntu等Debian系系统中,smartmontools工具链(smartctl+smartd)提供了对SATA/NVMe等多种接口硬盘的标准化访问能力。该技术的价值在于实现故障前置预警——例如NVMe盘的Media and Data Integrity Errors大于0即表明不可逆损伤,而SATA盘的R

weixin_34008784的博客 244

Windows 11 C盘爆满真相:四大隐形空间杀手诊断指南

C盘空间不足是Windows系统最常见却最易被误判的底层问题。其本质并非简单垃圾堆积,而是由系统更新残留(如Windows.old)、用户缓存(AppData)、虚拟化文件(.vhdx)及卷影副本(VSS)四大技术机制共同导致的空间失控。理解NTFS权限、稀疏文件特性、组件存储架构与符号链接原理,是精准释放空间的前提;而PowerShell原生命令、DISM工具链和WSL2管理指令,构成了可审计、可复用、零风险的工程化解决方案。该方法广泛适用于IT支持、开发者及普通用户,尤其在Windows 11更新频繁、

weixin_30444111的博客 166

Ubuntu 虚拟机磁盘空间不足完整解决教程

df -h看到空间变大就成功了。df -h看到空间变大就成功了。

2501_92509118的博客 766
上一篇: Mac 风扇狂转、键盘烫手?排查了这 4 个真凶之后,我的 Mac 安静了
下一篇: Mac 外接显示器完全指南:从插上线到调好每个参数
coding4u
博客等级 码龄14年 0粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值