麻省理工大牛分享垃圾回收算法在实时系统领域最新成果PDF手册

牛皮!麻省理工大牛研究出垃圾回收算法在实时系统领域最新成果,编撰成PDF手册在线分享 写在前面 垃圾回收技术给编程所带来的好处是不言而喻的,它能够从根本上解决软件开发过程中的内存管理问题,大大提升开发效率。 对于开发人员而言,在享受垃圾回收机制所带来便利的同时,是否曾想过隐藏在它背后的秘密?在进行技术选型时,如何评估垃圾回收对性能可能造成的影响?面对编程语言所提供的种类繁多的垃圾回收相关参数,应当如何进行配置与调优? 今天小伙伴们有福了,小编特意为大家带来这篇由垃圾内存算法出发,深度掌握垃圾算法技术实现的秘籍,相信通过本篇,开发人员能够更加深入地了解垃圾回收方面的相关问题、不同回收器的 阅读详情

写在前面

垃圾回收技术给编程所带来的好处是不言而喻的,它能够从根本上解决软件开发过程中的内存管理问题,大大提升开发效率。

对于开发人员而言,在享受垃圾回收机制所带来便利的同时,是否曾想过隐藏在它背后的秘密?在进行技术选型时,如何评估垃圾回收对性能可能造成的影响?面对编程语言所提供的种类繁多的垃圾回收相关参数,应当如何进行配置与调优?

今天小伙伴们有福了,小编特意为大家带来这篇由垃圾内存算法出发,深度掌握垃圾算法技术实现的秘籍,相信通过本篇,开发人员能够更加深入地了解垃圾回收方面的相关问题、不同回收器的工作模式。接下来一起来看一下这篇由麻省理工学院大牛撰写的神书吧!!!

第1章:引言

  • 1.1 显式内存释放
  • 1.2 自动动态内存管理
  • 1.3 垃圾回收算法之间的比较
  • 1.4 性能上的劣势
  • 1.5 实验方法

     

第1章以探讨为什么需要自动内存管理作为开篇,简要介绍了对不同垃圾回收策略进行比较的方法。该章结尾介绍了贯穿全书的抽象记法与伪代码描述方式。

第2章:标记-清扫回收

  • 2.1 标记-清扫算法
  • 2.2 三色抽象
  • 2.3 改进的标记清扫算法
  • 2.4 位图标记
  • 2.5 懒惰清扫
  • 2.6 标记过程中的高速缓存不命中问题
  • 2.7 需要考虑的问题

     

第3章:标记-整理回收

  • 3.1 双指针整理算法
  • 3.2 Lisp 2算法
  • 3.3 引线整理算法
  • 3.4 单次遍历算法
  • 3.5 需要考虑的问题

     

第4章:复制式回收

  • 4.1 半区复制回收
  • 4.2 遍历顺序与局部性
  • 4.3 需要考虑的问题

     

第5章:引用计数

  • 5.1 引用计数算法的优缺点
  • 5.2 提升效率
  • 5.3 延迟引用计数
  • 5.4 合并引用计数
  • 5.5 环状引|用计数
  • 5.6 受限域引|用计数
  • 5.7 需要考虑的问题

     

第2-5章详细描述了4种经典的垃圾回收算法,分别是标记-清扫算法、标记-整理算法、复制式回收算法以及引用计数算法。本篇对这些回收算法进行了深入的研究,并特别关注了其在现代硬件设施上的实现。

第6章:垃圾回收器的比较

  • 6.1 吞吐量
  • 6.2 停顿时间
  • 6.3 内存空间
  • 6.4 回收器的实现
  • 6.5 自适应系统
  • 6.6 统一垃圾回收理论

     

第6章深人比较了第2~ 5章所介绍的回收策略与算法,评估了它们各自的优缺点以及在不同情况下的适用性。

第7章:内存分配

  • 7.1 顺序分配
  • 7.2 空闲链表分配
  • 7.3 内存碎片化
  • 7.4 分区适应分配
  • 7.5 分区适应分配与简单空闭链表分配的结合
  • 7.6 其他需要考虑的问题
  • 7.7 并发系统中的内存分配
  • 7.8 需要考虑的问题

     

内存回收策略同样依赖于内存分配策略。第7章介绍了多种不同的内存分配技术,并进一步探究了自动垃圾回收与显式内存管理这两种场景下分配策略的不同之处。

第8章:堆内存的划分

  • 8.1 术语
  • 8.2 为何要进行分区
  • 8.3 如何进行分区
  • 8.4 何时进行分区

     

前7章假定所有堆中的对象均采用相同的管理策略,但根据许多因素可知这并非一种良好的设计策略。第8章讨论了为何需要将堆划分为多个不同的空间,以及如何管理这些空间。

第9章:分代垃圾回收

  • 9.1 示例
  • 9.2 时间测量
  • 9.3 分代假说
  • 9.4 分代与堆布局
  • 9.5 多分代
  • 9.6 年龄记录
  • 9.7 对程序行为的适应
  • 9.8 分代间指针
  • 9.9 空间管理
  • 9.10 中年优先回收
  • 9.11 带式回收框架
  • 9.12 启发式方法在分代垃圾回收中的应用
  • 9.13 需要考虑的问题
  • 9.14 抽象分代垃圾回收

     

第9章介绍了最成功的对象管理策略之一:分代垃圾回收。

第10章:其他分区策略

  • 10.1 大对象空间
  • 10.2 基于对象拓扑结构的回收器
  • 10.3 混合标记清扫、复制式回收器
  • 10.4 书签回收器
  • 10.5 超引用计数回收器
  • 10.6 需要考虑的问题

     

第10章介绍了大对象的管理策略以及其他分区策略。

第11章:运行时接口

  • 11.1 对象分配接口
  • 11.2 指针查找
  • 11.3 对象表
  • 11.4 来自外部代码的引用
  • 11.5 栈屏障
  • 11.6 安全回收点以及赋值器的挂起
  • 11.7 针对代码的回收
  • 11.8 读写屏障
  • 11.9 地址空间管理
  • 11.10 虚拟内存页保护策略的应用
  • 11.11 堆大小的选择
  • 11.12 需要考虑的问题

     

在构建垃圾回收器的过程中,与运行时系统其他部分的对接是最复杂的内容之一。因此第11章用了一整章的篇幅来介绍运行时接口,包括指针查找、能够安全发起垃圾回收的代码位置、读写屏障等。

第12章:特定语言相关内容

  • 12.1 终结
  • 12.2 弱引用
  • 12.3 需要考虑的问题

     

第12章讨论了特定语言相关内容,包括终结机制和弱引用。

第13章:并发算法预备知识

  • 13.1 硬件
  • 13.2 硬件内存一致性
  • 13.3 硬件原语
  • 13.4 前进保障
  • 13.5 并发算法的符号记法
  • 13.6 互斥
  • 13.7 工作共享与结束检测
  • 13.8 并发数据结构
  • 13.9 事务内存
  • 13.10 需要考虑的问题

     

第13章探讨了现代硬件系统给垃圾回收器的实现者所带来的新机遇与挑战,同时介绍了同步、前进、结束、一致等问题的相关算法。

第14章:并行垃圾回收

  • 14.1 是否有足够多的工作可以并行
  • 14.2 负裁均衡
  • 14.3 同步
  • 14.4 并行回收的分类
  • 14.5 并行标记
  • 14.6 并行复制
  • 14.7 并行清扫
  • 14.8 并行整理
  • 14.9 需要考虑的问题

     

第14章介绍如何在挂起所有应用程序线程的前提下使用多个线程进行垃圾回收。

第15章:并发垃圾回收

  • 15.1 并发回收的正确性
  • 15.2 并发回收的相关屏障技术
  • 15.3 需要考虑的问题

     

第16章:并发标记清扫算法

  • 16.1 初始化
  • 16.2 结束
  • 16.3 分配
  • 16.4 标记过程与清扫过程的并发
  • 16.5 即时标记
  • 16.6 抽象并发回收框架
  • 16.7 需要考虑的问题

     

第17章:并发复制、并发整理算法

  • 17.1 主体并发复制: Baker算法
  • 17.2 Brooks闫接屏障
  • 17.3 自删除读屏障
  • 17.4 副本复制
  • 17.5 多版本复制
  • 17.6 Sapphire回收器
  • 17.7 并发整理算法
  • 17.8 需要考虑的问题

     

第18章:并发引用计数算法

  • 18.1 简单引用计数算法回顾
  • 18.2 缓冲引用计数
  • 18.3 并发环境下的环状引用计数处理
  • 18.4 堆快照的获取
  • 18.5 滑动视图引|用计数
  • 18.6 需要考虑的问题

     

第15-18章介绍了多种不同种类的并发回收器,它们均放宽了“万物静止”这一要求,其回收过程只需要给用户程序引入十分短暂的停顿。

第19章:实时垃圾回收

  • 19.1 实时系统
  • 19.2 实时回收的调度
  • 19.3 基于工作的实时回收
  • 19.4 基于间隙的实时回收
  • 19.5 基于时间的实时回收:Metronome回收器
  • 19.6 多种调度策略的结合:“税收与开支”
  • 19.7 内存碎片控制
  • 19.8 需要考虑的问题

     

最后,第19章探讨了最富挑战性的课题,即垃圾回收在硬实时系统中的应用。

总结

本篇自始至终都密切关注现代硬件所带来的机遇与限制,对局部性问题的考量将贯穿全文。我们默认应用程序可能是多线程的。尽管本篇涵盖了很多更加简单、更加传统的算法,但我们还是花了全篇近一半的篇幅来介绍并行回收、增量回收、并发回收以及实时回收。

高清完整版 The Garbage Collection Cookbook 垃圾回收算法手册 The Garbage Collection Cookbook 垃圾回收算法手册 立即下载

相关推荐

The Garbage Collection Cookbook(垃圾回收算法手册)(中文版)

垃圾回收算法的经典著作之一,常见的垃圾回收算法 【中文版】 垃圾回收算法的经典著作之一,常见的垃圾回收算法 【中文版】

JVM垃圾回收算法

所有现代的标记-整理回收器均使用滑动整理,它不会改变对象的相对顺序,也就不会影响赋值器的空间局部性。复制式回收器甚至可以通过改变对象布局的方式,将对象与其父节点或者兄弟节点排列的更近以提高赋值器的空间局部性。

qq_64912062的博客 269

The Garbage Collection Handbook.pdf

The Garbage Collection Handbook:The Art of Automatic Memory Manage

单次遍历,等概率随机选取问题

又是一道概率问题,不过跟之前的题目一样,这也是一道非常简单的题目。 问题描述:假设我们有一堆数据(可能在一个链表里,也可能在文件里),数量未知。要求只遍历一次这些数据,随机选取其中的一个元素,任何一个元素被选到的概率相等。O(n)时间,O(1)辅助空间(n是数据总数,但事先

TheAlgorithmArt的专栏 1472

存储器的分配与回收算法实现

用C++实现的存储器的分配与回收算法,有最先适应法、最佳适应法、最坏适应法三种,虽然程序里能够选择三种中的每一种算法,但是三种算法的实现还是要分别运行一遍,虽然有这点瑕疵,不过功能已经实现。

C++模拟存储器的分配与回收算法实现

存储器的分配与回收算法其中有最先适应法、最佳适应法、最坏适应法三种 另外还有运行结果截图

《垃圾回收算法手册 自动内存管理的艺术》——引言、标记清扫(笔记)

《垃圾回收算法手册 自动内存管理的艺术》 引言部分 标记—清扫回收

weixin_46949627的博客 1276

垃圾回收算法与实现——高清非扫描.pdf

本书分为“算法篇”和“实现篇”两大部分。算法篇介绍了标记-清除算法、引用计数法、复制算法、标记-压缩算法、保守式GC、分代垃圾回收、增量式垃圾回收、RC Immix算法等几种重要的算法;实现篇介绍了垃圾回收在Python、DalvikVM、Rubinius、V8等几种语言处理程序中的具体实现。本书适合各领域程序员阅读

存储器的分配与回收算法实现_麻省理工大牛分享垃圾回收算法在实时系统领域最新成果PDF手册...

写在前面垃圾回收技术给编程所带来的好处是不言而喻的,它能够从根本上解决软件开发过程中的内存管理问题,大大提升开发效率。对于开发人员而言,在享受垃圾回收机制所带来便利的同时,是否曾想过隐藏在它背后的秘密?在进行技术选型时,如何评估垃圾回收对性能可能造成的影响?面对编程语言所提供的种类繁多的垃圾回收相关参数,应当如何进行配置与调优?今天小伙伴们有福了,小编特意为大家带来这篇由垃圾内存算法出发,深度掌握...

weixin_39644713的博客 109

垃圾回收相关算法.pdf

资源描述: 1.JVM中[垃圾回收相关算法]的所有内容-pdf 2.资源内容:JVM中[垃圾回收相关算法]所有内容 3.学习目标:了解jvm底层原理 4.特点:简单易懂,容易上手 5.使用说明:需要使用pdf打开

pgpool-II安装部署

文章介绍了pgpool-II的核心功能、架构组成以及实际部署的关键配置步骤

weixin_41690116的博客 1422

《垃圾回收算法手册 自动内存管理的艺术》——标记整理与复制式回收(笔记)

《垃圾回收算法手册 自动内存管理的艺术》 标记整理与复制式回收

weixin_46949627的博客 1122

YOLOv8+ByteTrack实战:5分钟搞定多目标跟踪(附鱼群检测调参秘籍)

本文详细介绍了如何利用YOLOv8和ByteTrack快速实现多目标跟踪,特别针对鱼群检测等复杂场景提供参数调优秘籍。通过环境配置、核心机制解析和专项调优技巧,开发者可在5分钟内搭建高效跟踪系统,适用于水产养殖、交通监控等实际应用。文章还包含工程落地方案和性能优化建议,帮助实现精准的鱼群计数与行为分析。

e1f2g的博客 1019

GC系列:如何优化标记-整理算法

标记-整理算法有一个整理对象,避免产生内存碎片的过程,那么回收器是怎么整理对象的?整理算法又是怎么区分性能好坏的?整理过程大概需要哪几个步骤?

一只海滩上的贝壳 4622

mstar PQ软件修改方法

1.修改ADC的值 Static code APIXC_AdcGainOffsetSetting tADCSetting[ADC_SET_NUMS]= #define INIT_ADC_RGB_RED_GAIN               0x1000 #define INIT_ADC_RGB_GREEN_GAIN           0x1000 #define INIT_ADC_RGB

qq_18810259的专栏 2565

高通平台开发系列讲解(USB篇)MBIM协议详解

📢本文主要介绍高通平台USB网卡MBIM协议。

内核笔记 5438

Jvm的垃圾回收算法详解+第三版PDF分享

Jvm中垃圾回收算法主要分为以下四种 1.标记-清除算法 2.复制算法 3.标记-整理算法 4.分代收集算法 下面我们来详细说说这几种算法 1.标记-清除算法 过程:首先从GCROOT开始,向下扫描标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。 即 扫描—标记----清除 缺点:标记和清除两个过程的效率不高,还有就是标记清除之后会产生大量不连续的内存碎片,这样在分配大对象的时候,无法找到足够的连续内存提前触发一次GC 2.复制算法 过程:为了解决标记–清除算法的效率问题,复制算法将内存分

凝孑哒哒哒的博客 1229

YOLOv11改进策略【SPPF】| 将特征金字塔池化修改为:SPPCSPC,提升模型的特征提取能力和计算效率。

本文记录的是。YOLOv7中的SPPCSPC(Spatial Pyramid Pooling Cross Stage Partial Connections)模块是一种结合了(SPP)和(CSP)的改进结构,本文将其添加到YOLOv11中,

Limiiiing的博客 1820

膜拜!阿里内部学习的五大深入理解Java虚拟机PDF,真的强

第3版更新: Java虛 拟机的各种监控、管理等辅助工具的功能日益强大,几乎每个版本在这些工具的数量、功能上都会或多或少有所变化,除了将第2版涉及的工具的变化依照JDK版本进行升级外,本章还新增了对JDK 9中加入的JHSDB的使用讲解,并增加了对JFR和]MC的工作原理和使用方法的介绍,以及对部分JDK外部的工具(如]IT Watch)的简要介绍。此外,在]DK9时引入了Java模块化系统,这是近年来]ava技术的一次重要升级,也是对类加载部分影响巨大的一项变革,在本章将加入专门的小节对其进行讲述。

程序员高级码农的博客 1141

FM20S用户手册-PL端案例开发手册

为便于演示,本次操作直接将led_flash案例中的 "led_flash_fm20s\constraints\constrs_1Ved_flash_fm20s.fdc"文件全部代码拷贝至编辑 界面,并点击保存按钮。引脚约束请查看案例工程"led_flash\project\led_flash_fm20s\constraints\constrs_1\"目 录下的led_flash_fm20sfdc。(4)弹出如下界面,在界面配置Select device forthe project"内容,如下图。

创龙,嵌入式一体化解决方案商 401

Altium Designer系列: 软件系统参数配置保存

【Altium Designer实践】 软件系统参数配置保存 作者 CodeAllen ,转载请注明出处 目录设置中文菜单高亮模式设置文件关联pcb设置布线设置保存配置文件(复用) 设置中文菜单 DXP->Preferences 高亮模式设置 文件关联 pcb设置 布线设置 保存配置文件(复用) ......

CodeAllen嵌入式 2018

Android内存管理原理

一般来说,程序使用内存的方式遵循先向操作系统申请一块内存,使用内存,使用完毕之后释放内存归还给操作系统。然而在传统的C/C++等要求显式释放内存的编程语言中,记得在合适的时候释放内存是一个很有难度的工作,因此Java等编程语言都提供了基于垃圾回收算法的内存管理机制: 垃圾内存回收算法 常见的垃圾回收算法有引用计数法(Reference Counting)、标注并清理(...

weixin_30273763的博客 233

YOLOv11改进 | 集成FEM、FFM与SCAM即插即用模块:特征增强、融合与空间上下文建模新范式

FEM解决特征表达不足问题,增强关键特征响应FFM优化多尺度融合,提升小目标检测精度SCAM建模空间上下文,改善目标交互预测在保持YOLOv11实时性优势的同时,实现mAP+8.1%的显著提升,特别在复杂光照、密集目标、交互预测场景表现突出。其模块化设计使开发者可根据需求灵活组合,为各种复杂场景提供定制化解决方案。未来,随着跨模态扩展与神经架构搜索的深入,YOLOv11-FSC将进一步推动目标检测技术向更智能、更高效的方向发展。

走向CTO的路上... 988

天津理工大学《操作系统》实验二,存储器的分配与回收算法实现,代码详解,保姆式注释讲解

天津理工大学《操作系统》实验二,存储器的分配与回收算法实现,代码详解,保姆式注释讲解 实验内容 1. 本实验是模拟操作系统的主存分配,运用可变分区的存储管理算法设计主存分配和回收程序,并不实际启动装入作业。 2. 采用最先适应法、最佳适应法、最坏适应法分配主存空间。 3. 当一个新作业要求装入主存时,必须查空闲区表,从中找出一个足够大的空闲区。若找到的空闲区大于作业需要量,这是应把它分成二部分,一部分为占用区,加一部分又成为一个空闲区。 4. 当一个作业撤离时,归还的区域如果与其他空闲区相邻,则应合并成一个

lrp210304的博客 4992

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

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

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

操作系统---存储器空间的分配和回收实现

可变分区下管理方式下的优先适应算法

m0_58342797的博客 606

计算机控制技术及应用

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

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 190
上一篇: 阿里内部强推的SpringScurity实战笔记,与君共分享
下一篇: 跳槽跳出经验!【高质量Java面试题】
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值