揭秘 AnolisOS 国密生态,想要看懂这一篇就够了

Vmware 16 安装 Anolis 8.6 Vmware 安装 Anolis Vmware 16.0 Anolis 8 WonderShaper 阅读详情

此文原系 2021 年阿里云开发者大会,开源操作系统社区和生态分论坛,题为《国密技术开发与实践》的分享会后解读。
AnolisOS 国密是社区在 AnolisOS 上做的国密技术解决方案,非常欢迎业界有兴趣的开发者能够参与到 OpenAnolis 社区,为国内的基础软件生态添砖加瓦。

演讲嘉宾:

杨洋:蚂蚁集团高级技术专家,主导开发了 BabaSSL,也是国内唯一的一个 OpenSSL maintainer,参与起草并推动 RFC8998 标准国际化。

张天佳:阿里云技术专家,主要负责 AnolisOS 上国密技术的开发和应用,参与实现了 libgcrypt 中的国密算法和 Linux 内核中的 SM2 算法。

让我们穿越回现场????:

缘起

说到密码算法,大家一定很熟悉 MD5,AES,RSA 这些通用的国际标准算法,这也是目前我们普遍采用的密码学算法,它们在数据安全、通信、区块链等众多领域都有着广泛的应用。

众所周知,这些算法标准都是国外制定的,在某些情况下这会对国内信息安全有不利影响。当下有实力的国家,甚至有些大公司都制定了自己的算法标准。

顾名思义,国密就是密码算法的国产化,跟其它领域一样,密码算法的国产化已经势不可挡,这也是我们必须要做的事情。中国的国密算法为我们提供了一个新的选择,在必要的场合中可以选择替代那些国际主流算法,尤其是当下国际贸易冲突,技术封锁不可忽视的大环境下,大规模推广和采用国密算法将为国内重要的网络基础设施提供可靠的数据安全保障。

国密简介

我是谁,从哪里来?

国密是一个口语化的称呼,官方名称是国家商用密码,简称商密,拼音缩写是 SM,这也是国密标准中具体算法名字的来源。国密是用于商用的、不涉及国家秘密的密码技术。

国密标准完全由中国密码管理局制定,主要的技术实现也基本是国内开发人员完成的,这对摆脱国外的密码技术和产品依赖是非常有利的。

到哪里去?

自 2012 年以来,SM2/3/4 的国密标准陆续公布,目前国密技术生态基本处于一个正在逐步走向成熟的阶段,但国内密码基础软件在采用国密算法方面仍处于碎片化的状态,比如我们经常可以看到各种个人或组织名义开源的支持国密算法的库;此外这些开源项目的安全更新和社区活跃也都做的不好。国密的推广仍然需要我们中国基础软件的开发者和用户共同努力。

2020 年 1 月 1 日,《中华人民共和国密码法》正式实施,从法律层面规范了国家商用密码的应用和管理,这也为推广和应用国密提供了必要的法律保障。

与国际算法的对比

这里是国密算法和国际通用算法的一个对比,可以直观地看到国密的一个基本情况:

针对各种常用的国际能用算法类型,比如对称算法,公钥算法和消息摘要算法,国密标准都定义了对应的相同功能的国密算法,比如 SM4 提供了与 AES 同样的加密强度,并且支持各种加密模式;SM2 是基于椭圆曲线的公钥算法,同时定义了非对称加解密,数字签名和密钥交换标准,相对于 RSA,SM2 的密钥更短,但支持的加密强度却更高;SM3 是国密定义的消息摘要算法标准,摘要长度是固定的 256 位,强度等同于 SHA256。

除了基础的算法,国密标准也定义了 TLCP 国密双证书协议,用以支持国内的传输层安全协议。这里还有一个好消息,今年三月份,TLS1.3+国密单证书协议正式被国际标准所承认,并且以 RFC8998 标准发布,这意味着我们可以选择在 TLS1.3 协议中使用完整的国密套件,目前我们也在联系正规浏览器厂商支持这个标准的实施和应用。

同时国密也定义了使用国密算法的 X509 证书,使用 SM3 哈希算法,SM2 算法作为数字签名,证书类型是 SM2-with-SM3。

对开发者来说,国密提供了一个选择,可以选择从国际通用算法平滑迁移过来。除此之外,国密还有其它一些算法标准,是不太常用的,比如 SM9,ZUC 算法等。

BabaSSL 前世今生

BabaSSL 是主打国密的密码算法库,与 OpenSSL 1.1.1 保持兼容,作为国密的密码算法解决方案而诞生。

BabaSSL 是基于之前蚂蚁集团和阿里集团内部的 OpenSSL 版本合并而来,并首次进行了开源。BabaSSL 的含义是:灵巧、轻快且靠谱的密码学和 SSL/TLS 工具库。

BabaSSL 的绿色商标,是基于阿里的橙色和蚂蚁的蓝色混合而来,也意味着我们希望将 BabaSSL 打造成一个灵活、小巧并且健壮的基础密码学库。

BabaSSL 目前在阿里集团和蚂蚁集团内部得到了非常广泛的使用。从具体场景来看,有如下三个方面,分别是存储、网络和端上的设备。其中网络服务的场景,是 BabaSSL 最大的支撑场景,例如淘宝、天猫、阿里云等各种涉及到链路加密的服务器端。此外移动端 App,例如支付宝手机 App 中集成了 BabaSSL 来实现多种密码学的能力。

开源

BabaSSL 已经在去年的 10 月份进行了开源,目前代码是托管在 OpenAnolis 上,当前开源的版本是 8.2.0,也是我们目前最新的稳定版本。

目前 BabaSSL 在阿里内部使用的版本和开源版本之间存在一定的差异,我们目前正在逐步把内部版本的功能特性迁移到开源版本上进行开源,最终变成一个统一的开源版本,那么届时阿里内部也完全依赖于这个开源的版本,而不会再保留内部的闭源版本。

特色功能

以下是 BabaSSL 当前最新稳定版本 8.2.0 的主要特色功能特性:

  • 基于 OpenSSL 1.1.1,具备 OpenSSL 1.1.1 的全部能力并且保持兼容;

  • 支持国密 SM2, SM3 和 SM4,并对 OpenSSL 1.1.1 中所欠缺的 SM2 能力,比如 X509 证书的签发和验证功能进行了补全;

  • GM/T 0024 和 TLCP 国密双证书 TLS 协议;

  • 支持 RFC 8998:TLS 1.3+国密单证书;

  • 提供了对 IETF 正在标准化过程中的 Delegated Credentials;

  • 支持 IETF QUIC API 底层密码学能力;

  • 更加完善的 SM2 算法支持,比如 X.509 证书签发、验签的支持;

  • 正在申请软件密码模块一级资质。

与 OpenSSL 对比

接下来是大家很关心的 BabaSSL 和 OpenSSL 这种老牌的密码算法库之间的区别:

从图上可以看到一些主要区别:

对于一些新的密码学技术标准,BabaSSL 会采取一种相对激进的策略快速跟进,比如在 IETF 中一些正在标准化流程中的技术方案,例如 delegated credentials, compact TLS 等,会进行原型的实现和快速跟进,而 OpenSSL 则是相对保守,因为 OpenSSL 社区的策略是原则上只实现已经发布了的国际标准和国家标准。

在对于国密算法、国密协议、国密的监管合规、云计算厂商的深度集成、以及国产化硬件等方面,BabaSSL 会进行更加深度和广泛的支持,而 OpenSSL 则支持的比较有限。

对于 API 的易用程度,由于没有历史包袱,所以 BabaSSL 可以提供更加简单易用的 API,而 OpenSSL 的 API 则相对复杂。 对于资源受限的嵌入式设备,BabaSSL 会进行体积裁剪和内存使用量的规划,OpenSSL 则明确表示没有相关的计划。

未来规划

这个是一个后续 BabaSSL 未来的版本规划和特性支持,基本上是每半年一个版本,涵盖了多种新的密码领域技术的支持,包括对 IETF 的几个 RFC 草稿的实现、国产化硬件的支持以及未来对于后量子密码学以及同态加密等前沿技术的支持:

  • 支持 MPK

  • Encrypted SNI

  • Compressed Certificate

  • Compact TLS

  • SM 算法优化

  • 支持国产化 CPU 的国密算法指令集

  • 体积裁剪,内存使用量优化

  • Tink API

  • ZUC,SM9

  • PQC

  • 同态加密算法

国密生态架构

万事俱备,有了基础国密算法支持,我们便可以构建出一个围绕国密算法展开的基础软件生态。这是一个国密生态的垂直场景,也是我们在 AnolisOS 上的国密生态架构,同时它也是一个全栈国密解决方案:从底层固件,内核,到基础密码学库,在主要链路上做国密改造,最终形成一个完整的基于国密的安全信任链条。

图上右边是一些垂直的国密应用场景,比如 SecureBoot,IMA,内核模块签名,文件完整性校验等。

到目前为止,我们已经在 Linux 内核,BabaSSL,libgcrypt,gnulib 等主流的基础组件中支持了国密算法,这部分的工作都已经回馈到了上游开源社区,有兴趣的开发者可以直接拿来使用或者作为参考,这些特性功能之后也会率先在 AnolisOS 上输出,达到一个开箱即用的原生支持国密的 OS。

从中也能看到,国密生态涉及到的软件栈非常多,形态也是各种各样,要逐步完善这个生态,还有很长的路要走。近几年的国际技术封锁也给了我们做这件事的决心和动力。

目前我们已经和统信,海光等厂商有一些合作,也非常欢迎业界有兴趣的开发者能够参与到社区,一起来做这个事情,之后我们的工作都会在 Anolis 社区以开源方式运作,秉着开放包容态度,继续补充完善这个生态,最终达到的一个目标是:整个安全信任链是完全建立在国密算法之上。

国密在 IMA 和 modsign 的应用

我们知道,密码学算法从来就是为安全服务的,我们来看两个在安全领域具体国密改造的例子。

IMA 是 Linux 内核提供一个文件完整性度量架构,用于检测文件是否被恶意篡改,内核模块签名的目的是类似的,用于检测模块的发行源头是否可信。它们都提供了自己的签名工具,签名工具依赖 BabaSSL 提供的 SM2 签名文件的能力,用于在用户态做签名。

文件签名的验证是在内核里完成的,由于内核不能直接使用应用层的库,为了支持在 Linux 内核里验证文件签名,我们在内核里实现了国密 SM2/3/4 算法以及国密证书的支持,用来验证签名是否合法。

通过对相应软件栈的改造,我们完全基于国密算法构建了 IMA 和内核模块签名的安全机制,而这些之前都是由国际算法来保证的。

全栈国密 SIG

以下是我们在 OpenAnolis 上的全栈国密 SIG,非常欢迎有兴趣的开发能参与到社区中来,为中国的基础软件安全添砖加瓦。

SIG

地址:https://openanolis.cn/sig/crypto

代码库:

https://codeup.openanolis.cn/codeup/crypto

欢迎Star:

https://babassl.github.io/

本周推荐阅读

CentOS即将停止维护,拥抱阿里“龙蜥“(Anolis OS),VMware安装Anolis OS与介绍 大家在自己电脑来进行服务器的一些操作时,基本都是使用CentOS 7或者是CentOS 8,但是2021年底CentOS 8宣布停止了维护;CentOS 7 在2024年6月30日也会停止维护!所以我们是时候换一个操作系统了,经过十几年的沉淀,阿里带着操作系统-"龙蜥"(Anolis OS)来了!对于我们来说,还是要支持国产的,毕竟不会被国外监控,安全!对于性能方面,面对阿里的业务都能够支撑,咱的应该没什么问题,我们那来部署自己本地的服务器,来搭建一些环境还是挺好的!完全兼容CentOS。 阅读详情

相关推荐

阿里云服务器Anolis OS龙蜥操作系统详细介绍

阿里云服务器Anolis OS镜像系统由龙蜥OpenAnolis社区推出,Anolis OS是CentOS 8 100%兼容替代版本,Anolis OS是完全开源、中立、开放的Linux发行版,具备企业级的稳定性、高性能、安全性和可靠性。该镜像支持使用ecs-user作为默认用户,该镜像rtc时钟默认使用utc标准。阿里云Anolis OS镜像操作系统。

fuwuqiba的博客 1615

Centos停止更新?这篇博客教会你安装平替Centos的操作系统安装Anolis

红帽公司已于2021年12月底停止维护开源服务器操作系统CentOS Linux8,并将于2024年6月30日停止维护CentOS Linux7(以下简称“CentOS停服”),CentOS操作系统在党政、金融、电信、医疗、能源、交通等领域广泛使用,该操作系统停服后,一旦出现重大安全漏洞,相关相关信息系统将面临重大网络安全威胁。请根据业务需求规划的配置要求,分别分配合适的CPU、内存、硬盘。

lz17267861157的博客 6614

AnolisOS双内核架构解析:RHCK与ANCK如何实现兼容与创新并存?

本文深入解析AnolisOS双内核架构RHCK与ANCK的设计理念与技术实现,探讨如何在企业级Linux环境中兼顾兼容性与创新性。RHCK确保与RHEL的完全兼容,适用于传统ERP迁移和硬件兼容性要求高的场景;ANCK则针对云原生环境优化,提升容器性能和网络效率。通过实际案例展示双内核切换的灵活性与协同工作机制,为技术决策提供实用指南。

weixin_29266647的博客 258

【AnolisOS 8.4操作系统安装从小白到熟练】

      红帽公司已于2021年12月底停止维护开源服务器操作系统CentOS Linux8,并将于2024年6月30日停止维护CentOS Linux7(以下简称“CentOS停服”),CentOS操作系统在党政、金融、电信、医疗、能源、交通等领域广泛使用,该操作系统停服后,一旦出现重大安全漏洞,相关相关信息系统将面临重大网络安全威胁。      Anolis OS(龙蜥操作系统)是由阿里、统信、飞腾、海光、兆芯、龙芯及中国电信股份有限公司云计算分公司、中国联通云数据有限公司、中国联通软研院、中国移动

点滴积无量 1万+

Anolis(龙蜥)系统介绍

Anolis OS 8 是 OpenAnolis 社区推出的完全开源、中立、开放的发行版,它支持多计算架构,也面向云端场景优化,兼容 CentOS 软件生态。Anolis OS 8 旨在为广大开发者和运维人员提供稳定、高性能、安全、可靠、开源的操作系统服务。版本特点:Anolis OS 7是龙蜥操作系统的早期版本,它主要面向企业级应用和服务器市场。该版本提供了稳定、可靠的操作系统环境,支持多计算架构,并集成了多种企业级特性。

十一、的博客 7579

随机变量序列 收敛 检验 matlab,利用MATLAB验证样条插值的收敛性

问题提出多项式插值是不收敛的,即插值的节点多,效果不一定就好。对样条函数插值又如何呢?理论上证明样条插值的收敛性是比较困难的,但通过本实验可以验证这一理论结果。.实验内容请按一定的规则分别选择等距或者非等距的插值节点,并不断增加插值节点的个数。考虑实验2.1中的函数或选择其他你有兴趣的函数。(中函数)。实验要求(1)随节点个数增加,比较被逼近函数和样条插值函数误差的变化情况。分析所得结果并与拉格朗...

weixin_30895121的博客 4735

密码技术&国密

国密 ssl过程 揭秘 AnolisOS 国密生态,想要看懂这一篇就够了 · SOFAStack 【国密算法那点事儿】解读DES和SM4、RSA和SM2及SM3-CA认证服务机构-数字证书|电子签名|电子签章|数据加密|时间戳|信息安全产品 ...

姜虹影的博客 293

别再只会插拔了!深入Linux内核,手把手调试USB热插拔中断(以高通平台为例)

本文深入探讨了Linux内核中USB热插拔中断的调试方法,特别针对高通平台提供了详细的实战指南。从硬件基础到内核机制,再到中断调试工具和常见问题排查,帮助开发者系统性地解决USB设备识别问题。通过监控中断状态、分析处理流程和高级调试技巧,提升USB热插拔的稳定性和性能。

weixin_29161785的博客 428

揭秘国产龙蜥OS操作系统:高效学习之路等你开启!

Anolis OS是一个完全开源、中立且开放的Linux发行版,专为多种计算场景设计,特别适合云端环境。 Anolis OS的推出旨在为广大开发者和运维人员提供一个稳定、高性能、安全、可靠且开源的操作系统服务。以下是Anolis OS的几个重要特点: 多计算架构支持:Anolis OS支持包括x86_64和aarch64在内的多种芯片架构,适配主流服务器硬件,如飞腾、海光、兆芯、鲲鹏等。 CentOS生态兼容:Anolis OS与CentOS软件生态兼容,这意味着用户可以无缝迁移现有的CentOS应用。

qq_45746668的博客 1043

威联通改装飞牛fnOS全攻略:从刷机到Docker影视部署

NAS系统是家庭数字存储的核心,x86架构的威联通设备凭借通用引导和驱动支持,成为改装替代系统的理想平台。飞牛fnOS作为基于Debian的国产NAS系统,以简洁UI、内置Docker和影视墙以及硬件转码能力,吸引了大量玩家。通过U盘引导安装、BIOS调整、系统盘SSD部署,可实现系统切换;原机械硬盘可挂载为存储池,配合Docker部署下载、远程访问等容器,影视中心自动削刮海报墙,硬件转码保障4K播放。改装过程需注意引导失败、硬盘识别、核显驱动等问题。这套方案能让老旧威联通焕发新生,兼顾易用性与扩展性。本文

weixin_33585822的博客 760

用Verilog搭建PCIe控制器核心模块

PCIe控制器是硬件设计的核心模块,负责实现设备与主机之间的高速通信。本文将以Verilog语言为例,分步骤讲解如何从零构建一个简化的PCIe控制器核心模块,涵盖事务层(TLP)生成、数据链路层(DLLP)处理和物理层(PHY)接口适配。目标是为嵌入式开发者、FPGA工程师提供一个可扩展的硬件设计框架。​。

xiaoheshang_123的博客 280

CentOS 停服,龙蜥社区已上线解决方案专区

CentOS 8 将于今天(12 月 31日)正式停止维护,龙蜥开源社区(OpenAnolis )已上线「CentOS 停服专区」,为受 CentOS 停服影响的用户提供迁移方案及长期稳定支持。此次上线的 CentOS 停服专区,既有基于龙蜥开源社区能力开发出的 CentOS 停服迁移整体解决方案 AOMS,也有多款与之配套的工具(包括适配客户场景的迁移工具、性能调优工...

weixin_60347558的博客 331

【毕业设计】基于雷达与深度学习的摔倒检测——雷达数据集处理

雷达原始数据是时域非平稳信号,快速傅里叶变换(Fast Fourier Transformation, FFT)不能很好地提取微多普勒效应的模式特征。因此短时傅里叶变换(Short Time Fourier Transformation, STFT)被应用于雷达信号的时频谱分析。本文主要介绍雷达数据集的预处理过程,包括时频谱图的中值滤波与 SVD 分解。

洋洋Young的博客 1808

互联网摸鱼日报(2024-04-18)

可选装侧面摄像头、行李架等,问界新M7增加新版本 | 最前线传万科正接洽出售所持普洛斯全部股权,半年前还称“看好”重启会员制,盒马又要变回以前的盒马了打破AI计算生态系统的瓶颈,Foundry获8000万美元新融资一年亏损2.7亿元,“两轮特斯拉”想冲出泥泽最令人失望的巨头在小红书一天卖货100万,腰尾部账号「卖货指南」来了继ABBA之后,又一个乐队选择在舞台永生产品卖爆的背后,情绪价值正在成为主要推力2024 年还需要纯电轿车吗?谷歌考虑加入付费订阅、Perplexity卖广告,AI商业化进入加速期?裁员

weixin_43849685的博客 416

DB文件在编程中的作用及示例代码

通过使用DB文件,我们可以实现数据的持久化存储,并能够高效地进行数据的增删改查操作。在本文中,我们以SQLite数据库为例,演示了如何使用Python语言创建和操作DB文件的示例代码。在实际的编程中,我们可以根据具体的需求和使用的数据库系统来进行更复杂的操作和优化。通过使用DB文件,我们可以实现数据的持久化存储,确保数据在程序关闭后也能被保留,并且能够高效地进行数据检索和更新。在本文中,我们将探讨DB文件的作用,并提供一些示例代码展示如何在编程中使用DB文件。上述代码中,我们使用SQLite提供的。

CodeSpark的博客 1821

Unity 佳能SDK 及数据获取

3. 把CameraControl 下面只要是绿色的 .cs 文件都复制到Unity 中。1. 填写信息跟官方申请SDK,大概1-2个工作日会邮件回复你。2. 将SDK这两个文件放到 Unity Plugins文件夹。

我知道你很急,但是路要一步步走 1477

【Anolis OS】龙蜥操作系统(Anolis OS) 8.6安装指南

【Anolis OS】龙蜥操作系统(Anolis OS) 8.6安装指南

2401_82628055的博客 9043

SAP 系统里生成 PDF 的几条主干路径:从 Spool 转换到 Adobe 原生渲染,再到 BTP 云服务

本文系统梳理了SAP生态中PDF生成的多种技术方案,包括Spool转换、OTF转换、Smart Forms/Adobe Forms原生生成以及云端服务等不同路径。文章通过实际案例和代码示例,详细分析了各方案的适用场景、技术要点和工程实践建议,特别强调了多语言支持、字体处理、性能优化等关键因素。针对不同业务需求,提供了从简单导出到复杂交互式PDF的完整解决方案框架,为SAP环境下的PDF处理提供了实用指南。

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

AnolisOS基础篇

龙蜥系统是一个由Linux内核、GNU工具和其他自由软件组成的操作系统,也被称为GNU/Linux系统。这个名字是由GNU项目的创始人Richard Stallman提出的,目的是强调GNU项目和Linux内核的合作。在龙蜥系统中,GNU提供了大部分的用户空间工具和应用程序,而Linux内核则提供了操作系统的核心功能和驱动程序支持。 龙蜥系统被广泛应用于服务器、个人电脑、移动设备等各种领域,并且成为了开源软件运动的一个重要代表。许多Linux发行版(如Ubuntu、Fedora、Debian等)都是基于龙

qq_64334741的博客 5971

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

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

龙蜥操作系统(Anolis OS)全版本生命周期

龙蜥社区的 Anolis OS 8 系列增加新成员啦!龙蜥操作系统(Anolis OS)8 是龙蜥社区( OpenAnolis )发行的开源 Linux 发行版,支持多计算架构,提供稳定、高性能、安全、可靠的操作系统支持。Anolis OS 8.6 是 Anolis OS 8 系列发布的的第三个小版本!新版本的特性、开发节奏和发布内容是如何的呢?本文会给大家做一个相应的介绍。全版本生命周期一览 当前已发布的版本生命周期支持情况如下: Anolis OS 7,结束日期是 2024 年 6 月 30 日;

叶澜╭的博客 9296

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Anolis OS和欧拉系统哪个好用?

Anolis OS是由阿里云推出的一款开源Linux发行版,旨在为企业提供稳定可靠的操作系统解决方案。它基于CentOS 8 Stream构建,并承诺长期支持,确保用户能够在较长的时间内获得必要的安全更新和技术支持。Anolis OS不仅支持x86架构,还支持ARM架构,这使得它能够更好地适应云计算和边缘计算等新兴领域的需求。

wordpress建站知识,云计算知识分享 1145

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Anolis OS龙蜥操作系统安装教程

简介 Anolis OS龙蜥操作系统 龙蜥操作系统(Anolis OS) 8 是 龙蜥社区 (OpenAnolis)发行的开源Linux发行版,与CentOS 8 100% 兼容,支持多计算架构,提供稳定、高性能、安全、可靠的操作系统。 龙蜥操作系统(Anolis OS) 8.4是继龙蜥操作系统(Anolis OS) 8.2后发布的的第二个版本,支持x86_64 和aarch64架构,搭载双内核RHCK(RHEL Compatible Kernel)和 ANCK(OpenAnolis Cloud Ker

Linux I Tell U 1万+

AnolisOS 8中使用Docker部署(全)

本文主要作为个人记录使用,初学者有意也可以作为一点参考。

weixin_47305973的博客 7951

Anolis8.8安装docker-ce

龙蜥操作系统(Anolis OS)是 OpenAnolis 龙蜥社区发行的开源 Linux 发行版,兼容主流 Linux 发行版操作习惯,支持多计算架构,提供稳定、高性能、安全、可靠的操作系统服务。当前 Anolis OS 提供 Anolis OS 7、Anolis OS 8 和 Anolis OS 23 三个主要版本。

Alex的博客 5602

Anolis OS 8.4龙蜥操作系统 安装步骤

首先,我们根据匿名用户产生的会话(session)构建了异质超图,紧接着我们设计了一种双通道信息累积机制来学习节点的表示,随后我们使用注意力层来分别获取用户的原始价格偏好及兴趣偏好,然后我们提出互导学习机制来建模价格偏好及兴趣偏好之间的关系用以修正原始的价格偏好和兴趣偏好表示,最后我们根据用户的价格偏好和兴趣偏好为用户形成个性化推荐列表。进入桌面后,打开“终端(Terminal)”应用程序,查看系统版本,显示系统为 Anolis OS 8.4,安装完成。隐私选项,默认开启定位系统,也可以点击按钮关闭。

EasySkills 易技的博客 6408
上一篇: 用安全计算保护关键业务
下一篇: 【活动报名】SOFAMeetup#6 北京站,从数据库到架构,聊透分布式,玩转 Layotto
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值