电脑关机了,内存就没数据了吗?

我们知道 Redis 是内存数据库,如果服务器断电,内存上面的数据就会丢失了。这个问题显然怎么解决? Redis 中数据的持久化 前言 我们知道 Redis 是内存数据库,所有操作都在内存上完成。内存的话,服务器断电,内存上面的数据就会丢失了。这个问题显然是需要解决的。 Redis 中引入了持久化来避免数据的丢失,主要有两种持久化的方式 RDB 持久化和 AOF 持久化。 AOF 持久化 什么是 AOF 持久化 AOF(Append Only File):通过保存数据库执行的命令来记录数据库的状态。 AOF日志对数据库命令的保存顺序是,Redis 先执行命令,把数据写入内存,然后才记录 阅读详情

提到网络攻击技术,你脑子里首先想到的是什么?

是DDoS?

是SQL注入、XSS?

还是栈溢出、RCE(远程代码执行)?

这些最常见的网络攻击技术,基本上都是与网络、软件、代码、程序这些东西相关。

这也好理解,计算机网络安全,不跟这有关,还与什么有关系?

今天跟大家介绍一下,攻击技术,除了这些,还有一些脑洞大开的方式,它们可能跟时间、震动、频率、温度等各种物理相关的元素相关,看完绝对让你瞠目结舌!

这些不同于传统软件安全方向,而是从其他侧面进行的网络攻击,称作侧信道攻击,也叫边信道攻击。

内存冷冻

请大家思考一个问题:如果计算机突然断电,内存里的数据是不是瞬间就没了?

内存大家都知道,计算机运行离不开这东西,程序指令和数据都存储在这里,但你知道内存条存储数据的原理吗?

看到图中那一块块黑色的东西了吗?那就是内存条存储数据的地方:内存颗粒。

在内存颗粒里面,是超大规模集成电路,里面是密密麻麻的存储单元格,每一个单元格存储一个比特位:

这个单元格中的核心部件是一个电容,电容有电压,如果电压在一定范围内,这个单元格就是1,否则就是0。通过无数个这样的单元格,构成了GB级的存储空间。

但大家学过物理应该知道,电容是一个不稳定的元件,随着时间的流逝,电荷会泄漏,如果不加以控制,内存条中的电压最终就会变成0,内存中的数据也就不准确了。

因此,内存在工作的时候,需要定时地进行数据刷新,对电容进行充电,一般最多64ms就得充一次电,才能保存数据的准确性。

好了,内存的背景知识交代完毕,现在回到本节一开始提到的那个问题:计算机突然断电了,内存中的数据瞬间就没了吗?

内存中的数据是通过电容这种电子元件在承载,电容充放电都是需要时间的,所以可以大胆猜测,即使断电了,内存中的数据全部消失也是需要时间的。

国外有人脑洞大开,做了一项实验,测试内存条断电后,里面的数据随着时间的流逝,消失的情况。

普通数据不方便观察,用图片最直接,实验中将一张蒙娜丽莎的图片载入内存中,然后断电,然后计算不同时间后,这张图的变化情况:

可以看到,在断电后的5s内,图片数据肉眼上看不到变化,30s后也影响不大,一分钟后也能依稀可见,5分钟后才彻底看不到。

而更重要的是,如果温度降低时,电容中电荷遗漏的速度将更加缓慢。下面这个表格是测试内存条数据错误率在正常情况和冷冻情况下的比较。

如上图所示,红色框是不冷冻情况,蓝色框是在零下50摄氏度情况,可以看到,在冷冻情况下,一分钟后,数据的错误率是0,即便是在300秒(5分钟)后,错误率也只有惊人的0.0095%。

所以,一种新的攻击方式就出来了:使用内存冷冻的方式,可以从内存条中提取数据。

内存中有什么数据?很多程序的密码密钥可能都存在于内存之中,最典型的比如Windows的开机密码。

以为电脑关机了就安全了?可不是这么回事哦!

熔断与幽灵

熔断与幽灵漏洞攻击大家应该不会陌生,在2017年刚刚爆发出来的时候,占据了无数媒体的头条,可见影响力之广。

在讲述这个漏洞之前,先请大家看一个故事。

学过计算机组成原理的朋友可能都知道,CPU有两个重要的特性:分支预测和乱序执行。

在执行到判断分支的时候(比如if判断),CPU会根据它自己的“经验”来判断,一会儿可能会走入哪一个分支,从而提前执行一些这个分支的指令,这叫分支预测。

另外,CPU在执行一些指令的时候,可能并不是按照顺序一条执行完再执行下一条,而是可能会预执行一些CPU认为可以提前执行、对程序流程无关的指令,这个叫乱序执行。

但CPU认为可以提前执行,那就真的可以提前执行吗,执行了可能对程序本身流程没有影响,但会不会有什么副作用呢?

这个问题一会儿再说,先来看另一个概念:缓存。

CPU执行程序需要频繁与内存通信,读取数据或者写入数据。但内存的响应速度比CPU慢多了,于是CPU在其内部加了一块缓存,将最近要用的数据放到这里来,避免每一次都从内存访问,提高工作效率。

因此,同样读取一个数据,从内存读和从缓存读,时间上是有差异的。

熔断与幽灵正是利用这一点,来进行了系统攻击。

假如你想读取操作系统内核的数据,但因为系统安全机制,应用程序是无法直接访问内核空间的,但这个漏洞就可以帮你实现内核空间数据的读取。

下面这段程序,先执行几十次,每次传入的x都小于16,每次都走入同一个分支,训练CPU,让它获得一些“经验”,让它认为 < 16是大概率要执行的分支,然后启用乱序执行,提前执行x < 16这个分支中的指令。

void bad_guy(int x) {
 if (x < 16) {
  temp &= array2[array1[x] * 512];
 }
}

来看一下,在上面这个例子中,x < 16这个分支中会通过array1这个数组访问内存,假设x突然来了一个很大的数,这样通过array1[x]访问的内存地址就溢出到了内核空间了。

乱序执行的后果,会提前计算array1[x] * 512,并将其作为下标访问array2数组的内容,然后会将这个内容从内存条加载到CPU缓存中。

突然冷不丁的来一个大于16的参数,这下它提前执行的指令就白费了。

而随后,CPU发现了这一次x是大于16的,不应该走到这个分支中来,上面描述的这一段活就白干了。

虽然是白干了,但它做了一件事:把array2数组对应下标的那一块数据从内存搬到缓存了。

这时再依次访问array2数组的每一个元素,就能知道刚才的下标,再进一步可以推断出那个内核空间的值。

然后不断变换x的输入,可以知道任意内核地址空间的数据。

这就是熔断与幽灵漏洞的核心思想:通过分支预测+乱序执行+缓存内存访问时间差异来推断内核数据。

计时攻击

熔断与幽灵,其实是利用了CPU访问内存和访问缓存的时间差来透露信息,从而实现数据泄漏,也就是说,利用的核心是时间这个物理量。

而利用时间的另一个经典攻击方式就是计时攻击。

给大家举个例子,如果要使用C语言编写一个函数,用来判断输入的密码是否正确,有人可能会这样写:

bool check_passwd(char* input) {
  bool result = false;
  const char* passwd = "XiaoBaiGe2021";
  if (input) {
    if (strlen(input) != strlen(passwd)) {
      return false;
    }
  
    const char* p1 = input;
    const char* p2 = passwd;
    while (*p1 && *p2) {
      if (*p1 == *p2) {
        p1++;
        p2++;
      } else {
        break;
      }
    }
    
    if (*p1 == '\0' && *p2 == '\0') {
      result = true;
    }
  }
  
  return result;
}

上面这个函数中,在正式的字符串比较之前,先进行了长度的比较,如果长度都不同,那就不用比较了,节省时间。

但这个看上去很聪明的做法,实际上可能会给攻击者提供了信息参考。

通过输入不同长度的字符串,发现程序验证所花费的时间不同,攻击者可能猜测出真正密码的长度。

接下来的验证过程中,开始逐位比较字符串的每一位,乍一看也没毛病,但同样的问题,如果第一位就比较错误,程序很早就退出,而如果比较的时间相对较长,则说明密码的前几位可能是正确的。

通过这些信息,然后进行不断尝试,密码可以在短时间内破解出来,是不是觉得不可思议?这是曾经发生过的真实案例。

正则表达式

正则表达式在字符串校验、文本提取、格式化解析等领域有非常广泛的应用,基本上所有主流的编程语言都有对应的程序库。

但你知道正则表达式的解析引擎是如何工作的吗,你知道如果传入一些特定的字符串,可能让解析引擎陷入巨大的计算陷阱吗?

正则表达式的解析引擎有一个重要的流派就是基于NFA,这是一种状态机。随着解析引擎的逐字符解析,状态机可能会有不同的下一个状态。由于每一个状态都有许多个下一个状态,解析引擎可能会在这条链路上不断前行,直到找到一个匹配的。

比如在 《白帽子讲Web安全》 一书中所提到的例子:

有一个这样的正则表达式:^(a+)+$

如果输入四个字符’aaaa’,解析引擎的执行过程是这样的:

它只有16条路径,很快就能走完。

但如果输入的字符a大量增加时,执行的路径将会暴增。

可以看到,随着后续字符串长度的增加,花费的时间开始呈2倍增长趋势。如果输入64个字符a,那将会是什么后果?

CPU飞转,程序失去响应,服务拒绝攻击DOS!

没想到吧,你只是输入了一个正则表达式字符串,就能让服务器失去响应。

总结

以上就是今天给大家介绍的一些侧信道攻击技术。

除了上面这些案例,通过CPU的利用率、CPU电信号的频率等信息,也能泄露出很多有价值的信息,侧信道攻击技术,不只是电影中的黑科技,而是可能真实发生的攻击。

装机心得(含启动原理配合排查问题),华硕B365Gaming+i7-9700+华硕TUF3-GeForce GTX 1660S O6G+海康威视c2000pro+金士顿马甲条16G*2 配置 装机放在公司用于开发,奈何公司cpu是在惨不忍睹,i5-5500的U,根本不能满足现在微服务开发的日常需求。本人又想DIY一台自己的台式机,于是有了接下来的一路踩坑。 CPU:i7-9700 主板:华硕B365Gaming 固态:海康威视c2000pro(1T,越大性能越好) 内存条:金士顿ddr4,16G,2666 电源:550W海盗船 机箱爱国者 遇到的问题清单 装好机屏幕不亮,主板有供电(RGB有亮) 重新插拔了内存条(马甲条) 每个内存插槽都试过 最后发现还是内存没怼到位 点亮 阅读详情

相关推荐

用完电脑不关机你试试?!

邻居Day²是个聪明又刻苦的程序猿。 近半年被Day²这小子天天营销洗脑,就说他们做的π-Disk派盘如何牛!如何天上有地下无。我理解说白了就是拿自己的电脑DIY一个私有云呗,貌似PC版的NAS(Network Attached Storage网络附属存储),只是功能确实强大了不少。 终于双十一被拉下水,左邻右舍一起团购了一把。否则Day²这娃说我们这帮老家伙还不如川建国拜振华呢?! 感叹,我的老苹果MacBook自豪地插上了派盘的小红旗????????!可就在同时隔壁老王就叫嚷开了,说被Day²骗了

chuanyuepan的博客 4756

RAM,ROM,SRAM,SDRAM,DDR内存

嵌入式开发者必备的各种存储器的知识!

风间琉璃的博客 8477

电源设计避坑指南:半桥LLC软启动的5个常见错误及解决方案

本文针对半桥LLC谐振变换器软启动过程中的五个常见设计错误,提供了详细的工程解决方案。重点分析了忽视谐振腔初始状态导致的电流冲击、软启动斜坡与环路带宽不匹配、开环到闭环切换时机不当、变压器偏磁以及参数未考虑边界条件等问题,并给出了包括主动预充电、自适应斜坡、最佳切换点判定等实用调试技巧,帮助工程师实现平稳可靠的电源启动。

weixin_29260291的博客 283

操作系统reboot之后ddr内容还在吗?

操作系统,bios, ddr

alloc_young的专栏 2696

从零开始学华为设备:手把手教你用ENSP搭建OSPF实验环境(附拓扑文件)

本文详细介绍了如何使用华为ENSP模拟器从零开始搭建OSPF多区域网络实验环境,包括拓扑规划、设备配置、OSPF参数优化及故障排查技巧。通过实战案例和配置示例,帮助网络工程师快速掌握华为设备的OSPF协议配置,提升企业网络环境中的实战能力。

weixin_29305313的博客 287

如何读懂CiteSpace图谱?科研小白必看的节点颜色/年轮/聚类解读手册

本文详细解析CiteSpace图谱的核心视觉元素,包括节点颜色、年轮和聚类标识,帮助科研人员准确解读数据分析结果。通过生物医学案例展示如何从图谱中识别关键文献和研究趋势,提供五步系统解读法和常见错误规避策略,助力科研小白快速掌握文献计量分析技巧。

weixin_29179311的博客 318

内存模块 --- 基础扫盲

内存基础问题

weixin_43604927的博客 1123

手把手教你用Three.js+Vue打造3D机房可视化系统(附完整代码)

本文详细介绍了如何使用Three.js与Vue 3构建企业级3D机房可视化系统。从技术选型、项目架构设计到3D场景构建、设备建模与渲染策略,提供了完整的开发方案和实战代码。重点讲解了如何实现设备状态实时监控、交互操作与性能优化,帮助开发者快速掌握3D可视化开发的核心技术。

ttt77的博客 320

电脑无法正常关机?点了关机又会自动重启

相信不少朋友遇到过电脑关机自动重启现象,一点关机,但随后电脑有会进入重启状态,就是一直不会停,属实是很难崩。

nimo观察者 3万+

第14.7章 高翔博士最新开源框架Lightning-LM源码解读(七):PoseExtrapolator模块深度剖析,揭秘激光SLAM高频位姿外推核心技术

PoseExtrapolator是Lightning-LM框架中负责高频位姿外推的核心模块,通过融合DR(航位推算)、激光里程计和PGO(位姿图优化)数据实现精准实时定位。模块初始化依赖PGO数据,后续通过DR数据进行高频位姿更新,并利用PGO结果进行误差补偿。关键函数AddDRLocAndExtrapolate处理DR增量位姿,结合速度补偿机制逐步修正误差,保证高频输出的同时提升精度。该模块体现了多传感器融合思想,通过互补性数据(高频DR与低频高精PGO)实现鲁棒定位,代码中使用了SE3位姿表示、互斥锁保

行知SLAM 350

Arduino I2C for TCA9548A应答扫描程序

Arduino I2C for TCA9548A应答扫描程序

perseverance51博客 1120

你的电脑关机吗

电脑开机的时候,电脑中的元部件温度会升高,关机后温度又会降低,如果频繁开关机的话,硬件温度忽高忽低会更容易造成电脑故障。当然,如果这类操作不熟悉的小伙伴,也可以隔个四五天开关机一次,来重置内存的中文件缓存,从而释放空间,让电脑恢复顺畅。电脑的睡眠状态是将电脑的运行数据存储在内存上,只保持内存供电,其他零部件进入断电状态,从而让能最小化的使用电力,并且唤醒后可以快速回到当初的状态。长时间不关机,电脑的硬件(如CPU、内存、硬盘等)会持续工作,这可能会导致硬件加速老化,从而影响电脑的整体寿命。

橙子味冰可乐的博客 4646

[Python] 为什么你的脚本明明没报错,却什么也没发生?

Python脚本运行后没报错却没结果?这是许多开发者遇到的棘手问题。文章分析了六种常见原因:代码未进入目标逻辑分支、输出路径错误、中间数据为空、异常被吞掉、异步操作未完成、运行了错误脚本版本。建议通过"过程可视化"排查,如打印关键变量、检查工作目录、验证数据状态等。职场中更应关注结果验证而非单纯代码执行,确保脚本真正解决问题。建立结果验证意识是从"会写代码"到"稳定交付"的关键转变。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 303

电脑关机之前必须要退出所有的正在运行软件吗?

如果还有未保存的数据,请记得优先保存一下,再点击关机哦!

小白电脑技术的博客 7147

一文吃透 SAP IDoc 状态码:从 TEDS1 到 WE02 排障,再到 ABAP 自动化监控

在 SAP 集成场景里,IDoc 往往是最常见、也最容易被低估的一条生命线:采购订单、发票、主数据、库存移动……只要系统之间要稳定地交换结构化业务数据,IDoc 就经常登场。真正让人头疼的,并不是 IDoc 本身,而是它在链路里到底走到了哪一步、卡在了哪里、该找谁背锅。这篇文章把常用的 IDoc 状态码按出站、入站拆开讲清楚,并且把每个状态对应的真实世界故障现象、排查入口、以及可以落地的 ABAP 监控代码串起来,让你看到状态码就能想到动作。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 410

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

电脑突然关机重启是什么原因?

一、电脑意外关机的原因: 1、电脑感染病毒; 2、电脑开启了“电脑遇到严重错误时自动关机&重启”的设置; 3、严重内存错误导致系统当机; 4、遭到恶意程序或代码攻击; 5、由于机器散热问题(CPU风扇工作不正常,机箱整体温度过高等); 6、电压不稳定(当电压过高或是下降到主机电源的最低工作电压以下,主机也会保护关机)。 二、电脑意外关机可能带来的后果: 1、突然关机重启

wsmzyzdw的博客 9524

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

现如今的电脑还有必要进行关机吗?

电脑关机这个操作实际上是几年前甚至十几年前个人电脑使用过程遗留下来的习惯。 那时候电脑的功耗都比较大,而且系统的内存文件管理、电源管理机制都不像现在这样好。所以,电脑关机操作一是为了省电,第二就是为了使电脑负荷减少,释放系统内存空间,使内存中的数据充分释放,方便下一次的流畅使用。 但是现在的电脑,不管是Mac还是Windows,主机和便携超级本的功耗都比过去大大降低,再加上优秀的系统管理机制。...

天宇龙腾的博客 3644

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

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

电脑选睡眠、休眠还是关机?

在使用休眠时, Windows 会将内存中的数据,保存到硬盘上系统盘根目录下的一个文件中(可以将这个文件理解为内存状态的“镜像”),然后关闭计算机。点击【开始】,依次选择【设置】→【系统】→【电源和睡眠】→【其他电源设置】→【选择电源按钮的功能】→【更改当前不可用的设置】,在下方【关机设置】下,选中【休眠】复选框,最后点击【保存修改】。基于电脑在睡眠状态下耗电量非常少,且能快速进入系统恢复工作,所以,当你需要离开电脑一小段时间,比如喝杯咖啡、睡个午觉或晚上下班等时,就非常适合使用【睡眠】。

rtkj1122的博客 7875

强制关机对电脑的影响_强制关机对电脑伤害大吗?涨知识了

强制关机对电脑有没有影响?电脑强制关机分为长按电源键和拔插座两种!使用电脑过程中,无论你的电脑配置高低都会遇到死机、卡顿无反应,这个时候不管是电脑高手还是萌新小白都束手无策,唯一的念头就是强制关机,或者是在心里默默的告诉自己等一下下就好了,但是它并没想象中那么听话,强制关机才是最有效、直接的方法。强制关机对电脑伤害大吗,会不会损害电脑的使用寿命?我们先了解一下强制关机与系统关机的流程。按住电源键关...

weixin_39803022的博客 1954

黑苹果 电脑关机是因为发生了问题_【电脑常识】常见的电脑误区,你中了几点?...

好的电脑使用习惯,可以延长电脑的使用寿命,减少问题的出现。对于很多电脑新手来说,在使用电脑时存在很多操作误区,今天蝈蝈就来给大家一一例举一下,看看你中了几点,希望看完之后,可以改正过来,也希望本文对于电脑初学的你有所帮助。1、直接按开关按钮关机或直接拔电源很多电脑小白关电脑都是直接按开关按钮或者直接拔电源的,这种暴力关机的行为,对电脑硬盘的损害是相当大的,特别是机械硬盘,所以一般有过这种操作之后,...

weixin_39815925的博客 2246
上一篇: 轻松让你的nginx服务器支持HTTP2协议
下一篇: ArrayList和LinkedList在性能方面的差别,能有多大?
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值