ASN.1 入门

ASN.1接口描述语言详解 ASN.1对于大多数人来讲似乎很陌生,可能很多人没有听说过ASN.1,然而事实上它就应用在我们生活的周围。比如,欧洲和日本使用的移动电话基于TCAP消息协议的,TCAP消息协议中则采用的ASN.1描述的,使用了BER(BasicEncodingRules)编码规则,共同实现了移动电话的呼叫。可以说,在一部移动电话与另一部电话之间通信时,是ASN.1协助实现了两部话机间的呼叫。此外,ASN.1和编码规则还被联邦快递用于大量地传输信息;大公司如HP/IBM/SUN等,使用ASN.1描述其打印机作业管理的标准接。 阅读详情

一、介绍
Abstract Syntax Notation One (ASN.1)是一种独立于机器的描述语言,用于描述在网络上传递的消息
 标准包括:  ISO 8824-1 | ITU-T X.680: Specification of basic notation,
 ISO 8824-2 | ITU-T X.681: Information object specification,
 ISO 8824-3 | ITU-T X.682: Constraint specification,
 ISO 8824-4 | ITU-T X.683: Parameterization of ASN.1
ASN.1特别适合表示现代通信应用中那些复杂的、变化的及可扩展的数据结构
ASN.1 可分为两个部分
       语法规则:从数据类型、内容顺序或结构等方面来描述消息的内容
       编码规则:如何编码实际消息中的数据
特点:
       表达简单和复杂类型的能力
       可对类型根据大小及(或)数值进行约束
       也可以施加更强的约束
       字段可标记为 OPTIONAL
       大写开头表示类型名,小写开头的表示变量名/字段名

二、ASN.1术语
       1.抽象语法(Abstract Syntax)
 描述通用数据结构
 允许定义数据类型和值
       2.数据类型(Data Type)
 值的集合,可以是简单类型或结构类型
 可以对数据类型命名
       3.编码(Encoding)
 用于表示数据值的字节序列
       4.编码规则(Encoding Rules)
 给出从一种语法到另一种的映射方法
       5.传输语法(Transfer Syntax)
 位模式(Bits pattern)
 描述数据是在传输时是如何表示的

三、ASN.1模块定义
       模块(module):ASN.1规范中的基本构造块
模块定义格式如下:

<modulereference> DEFINITIONS ::=
 BEGIN
  EXPORTS 
  IMPORTS 
  AssignmentList
 END
其中:EXPORTS 这个模块中的定义可能被其他模块引入
           IMPORTS 定义由其他模块引入
          AssignmentList 这个模块中将定义类型分配、值分配及宏定义


四、ASN.1简单类型
         1. 基本类型:BOOLEAN,INTEGER,ENUMERATED,REAL,BIT STRING,OCTET STRING
         2. 字符串类型(ISO10646-1的子集)
 NumericString (0-9,<space>)
 PrintableString (0-9,A-Z,a-z,<space>,<s[ecial>
 VisibleString
 GraphicString
 UTF8String
 IA5String (ASCII)
         3. 对象类型
 OBJECT IDENTIFIER 
 ObjectDescriptor 对象标识符:一个任意长的非负整数序列,用于标记对象(如算法等)
         4. 其它类型
 NULL 空值
 UTCTime
  yymmdd hhmm[ss] <local offset from UTC>
 GeneralizedTime
  yyyymmdd hhmm[ss] <local offset from UTC>
  强制从2050年开始

五、ASN.1类型定义
语法:   <type name> ::= <type>
        示例:
 Counter ::= INTEGER
 IpAddress ::= OCTET STRING
 Months    ::= ENUMERATED {
   january (1), february (2), march (3),
   april (4), may (5), june (6),
   july (7), august (8), september (9),
   october (10), november (11), december(12)
 }
六、ASN.1子类型定义
语法: <subtype name> ::= <type> (<constraint>)
        示例:
 Counter  ::= INTEGER (0..65536)
 IpAddress  ::= OCTET STRING ( SIZE(4) )
 Spring     ::= Months (march | april | may)
 Summer     ::= Months (june | july | august )
 SmallPrime ::= INTEGER ( 2 | 3 | 5 | 7 | 11 )
 ExportKey  ::= BIT STRING ( SIZE(40) )


七、ASN.1赋值
语法: <value name> <type> ::= <value>
        示例:
 ipInReceives Counter  ::= 2450
 ipRouteMask IpAddress ::= ‘FFFFFF00’H
 currentMonth Months   ::= july
 currentTime UTCTime   ::= “030708094018+0800”
 name VisibleString    ::= “John”
 married BOOLEAN       ::= TRUE
 faxMessage BIT STRING ::= ‘01100001101’B

 internet OBJECT IDENTIFIER ::= { iso(1) org(3) dod(6) 1 }
 private OBJECT IDENTIFIER ::= { internet 4 }

八、ASN.1结构类型
        SEQUENCE 对应于C语言中的struct
 类型定义
 UserAccount ::= SEQUENCE {
     username PrintableString,
     password PrintableString,
     accountNr INTEGER
 }
         赋值
 myAccount UserAccount ::= {
     username “tly”,
     password “guesswhat”,
     accountNr 2345
 }
      SEQUENCE OF 对应于C语言中的数组
 类型定义
 MemberCountries ::= SEQUENCE OF PrintableString
 AccountRegistry ::= SEQUENCE OF UserAccount
 赋值
 eastAsia MemberCountries ::= {
     “China”, “Japan”, “Korean”, “DPR”
 }
     SET 类似于SEQUENCE,但不考虑分量顺序
 类型定义
 UserAccount ::= SET {
     username [0] PrintableString,
     password [1] PrintableString,
     accountNr [2] INTEGER
 }
 赋值
 myAccount UserAccount ::= {
     accountNr 2345,
     username “tly”,
     password “guesswhat”
 }
     SET OF 集合类型,每一分量类型相同,不考虑顺序
 类型定义
 Keywords ::= SET OF PrintableString
 赋值
 someASN1Keywords Keywords ::= {
     “INTEGER”, “BOOLEAN”, “REAL”
 }

ASN.1介绍

出处:http://asn1.elibel.tm.fr/en/introduction/index.htm
翻译:ddonwi(ddonwi@sina.com)  
说明:我是第一次接触ASN.1,不知道它是什么东东,所以找了这份资料,边读边翻译,希望高手能通过这篇指出我理解上存在的错误,让我能够正确的理解ASN.1
最后修订日期:2004.3.20

主要概念

ASN.1 是通信协议中描述数据传输的正式标记(notation),它与语言实现和物理表示无关,与应用的复杂度无关。

ASN.1(Abstract Sysntax Notation number One 抽象语法标记)是定义抽象数据类型规格形式的标准。

它提供了一系列预定义的基本类型,诸如:
integers (INTEGER),
booleans (BOOLEAN),
character strings (IA5String, UniversalString...),
bit strings (BIT STRING),
...
并且它可以定义结构类型,比如:
structures (SEQUENCE),
lists (SEQUENCE OF),
choice between types (CHOICE),
...

子类型(Subtyping)约束也可以应用于任何ASN.1类型,用来限制类型的值的范围。

与很多其他的声称可扩展的语法不同,ASN.1 提供了处理和支持早期配置系统与新系统、新版本与老版本之间交互的可扩展性。

ASN.1 发送任何形式(音频、视频、数据等等)的信息都必须用数字传送。ASN.1只能包含信息的结构方面(没有已经定义的或考虑到的处理数据值的操作)。它不是一个编程语言。

 ASN.1成功的一个主要理由是它采用了一些如BER(Basic Encoding Rules) 或新制定的PER(Packed EncodingRules)这样的标准化的编码规则,它对受带宽限制的应用程序很有用。这些编码规则描述了如何将定义在ASN.1中的值译成适合传输的电码(例如:他们可以被转化为可传输的字节,或反向转化),其与机器、编程语言或者在应用程序中的表示无关。ASN.1的编码方式比很多竞争者更先进,能够快速并可靠的传输可扩展信息--这是无线带宽的一个优势。由于从1982年以后ASN.1已经成为一个国际标准,所以它的编码规则是成熟的并且它有长期的可靠性和互用性的跟踪记录。

几乎所有操作系统上的工具都支持ASN.1,ASN.1也支持如java,c和c++这样流行的编程语言,和包括COBOL这样的较老的编程语言。ASN.1的广泛性的一个例子是,有很多工具已经支持超过150种不同的计算机平台。
 
有大量经过检验的ASN.1工具已经被长期使用。使用这些工具,可以更快的将新产品带入市场,至少,可以召回那些没有经过有效测试的基于新代码的产品。
  
个案研究

假如一个公司拥有一个连接了数个销售网点的仓库,进货保存在这个仓库里 ,出货从这个仓库中调出。这个公司需要一个具有以下特征的协议:
定单收集在本地销售网点处;
它们被发送到仓库,在那里管理着交付货物手续;
通过客户的要求,交付的回执必须送回销售网点做下一步处理。

协议可以被表示为下列的两个ASN.1模块:
      
 Module-order DEFINITIONS AUTOMATIC TAGS ::=
BEGIN

Order ::= SEQUENCE {
  header  Order-header,
  items   SEQUENCE OF Order-line}

Order-header ::= SEQUENCE {
  number   Order-number,
  date     Date,
  client   Client,
  payment  Payment-method }

Order-number ::= NumericString (SIZE (12))

Date ::= NumericString (SIZE (8)) -- MMDDYYYY

Client ::= SEQUENCE {
  name     PrintableString (SIZE (1..20)),
  street   PrintableString (SIZE (1..50)) OPTIONAL,
  postcode NumericString (SIZE (5)),
  town     PrintableString (SIZE (1..30)),
  country  PrintableString (SIZE (1..20))
               DEFAULT default-country }
default-country PrintableString ::= "France"

Payment-method ::= CHOICE {
  check        NumericString (SIZE (15)),
  credit-card  Credit-card,
  cash         NULL }

Credit-card ::= SEQUENCE {
  type         Card-type,
  number       NumericString (SIZE (20)),
  expiry-date  NumericString (SIZE (6)) -- MMYYYY -- }

Card-type ::= ENUMERATED { cb(0), visa(1), eurocard(2),
                 diners(3), american-express(4) }

Order-line ::= SEQUENCE {
  item-code    Item-code,
  label        Label,
  quantity     Quantity,
  price        Cents }

Item-code ::= NumericString (SIZE (7))

Label ::= PrintableString (SIZE (1..30))

Quantity ::= CHOICE { unites       INTEGER,
                      millimetres  INTEGER,
                      milligrammes INTEGER }

Cents ::= INTEGER

Delivery-report ::= SEQUENCE {
  order-code   Order-number,
  delivery     SEQUENCE OF Delivery-line }

Delivery-line ::= SEQUENCE { item  Item-code,
                             quantity Quantity }

END

Protocol DEFINITIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS Order, Delivery-report, Item-code, Quantity,
        Order-number FROM Module-order ;

PDU ::= CHOICE { question CHOICE {
                   question1 Order,
                   question2 Item-code,
                   question3 Order-number,
                   ... },
                 answer  CHOICE {
                   answer1   Delivery-report,
                   answer2   Quantity,
                   answer3   Delivery-report,
                   ... }}
END

asn1格式详解 在ASN.1中,每种数据类型都有一个唯一的标识符,用于表示其类型和值。标签含义0x01BOOLEAN0x02INTEGER0x03BIT STRING0x040x05NULL0x060x0CUTF8String0x130x16IA5String0x17UTCTime0x180x30SEQUENCE0x31SET在ASN.1中,每个标签都对应着特定的数据类型,例如INTEGER、SEQUENCE等。 阅读详情

相关推荐

ASN.1抽象语法中常用类型编码[详解]

序列的Contents中包含,除了使用OPTIONAL或DEFAULT类型修饰的关键字之外,序列中含有每一个子项的ASN.1的完整编码,并且按照它们原先在序列中的顺序出现。本次介绍的是常用的ASN.1编码,这没有对所有的ASN.1类型进行解释,上述描述的基本都是ASN.1的基础类型,其他类型基本上都是上述类型的不同Contents编码规则。用来表示最后一个字节中补0的数量。第1子字节之后的字节,表示一个无符号数字,表示Contents中字节数量,其中最高有效位为第1子字节之后的第一个字节的第8 位。

应无所住而生其心 2252

来了解一下ASN.1?

想要了解证书,必须先了解ASN.1和编码规则。这篇文章简单介绍ASN.1,不过分探讨细节,大家如果有兴趣可以继续深入研究。

3603

别再瞎猜了!Fluent瞬态计算时间步长到底设多少?一个公式+实战案例搞定

本文详细解析了Fluent瞬态计算中时间步长的设置方法,通过黄金公式和实战案例,帮助工程师准确确定时间步长,避免计算发散和资源浪费。文章还介绍了动态调整策略和典型工程场景的参数优化,提升仿真效率和精度。

weixin_42638178的博客 427

密码学基础之ASN.1编码

ASN.1是一种国际标准的正式语言,由国际标准化组织(ISO)和国际电信联盟(ITU-T)共同制定,用于定义数据结构的抽象语法。它的设计目标是为了提供一种独立于特定计算机硬件、操作系统或编程语言的方式,来描述数据的结构和编码规则,以便在网络上传输和处理数据。

new9232的博客 6902

【深度强化学习】(2) Double DQN 模型解析,附Pytorch完整代码

Double DQN 算法是 DQN 算法的改进版本,解决了 DQN 算法过估计行为价值的问题。Double DQN 算法不直接通过最大化的方式选取目标网络计算的所有可能 Q 值,而是首先通过估计网络选取最大 Q 值对应的动作。在 Double DQN 框架中存在两个神经网络模型,分别是训练网络与目标网络。这两个神经网络模型的结构完全相同,但是权重参数不同;每训练一段之间后,训练网络的权重参数才会复制给目标网络。

博观而约取,厚积而薄发 1万+

局部路径规划算法 - B样条曲线(B-spline Curves)

本文详解了B样条以及代码实现

BigDavid123的博客 6508

asn1 java_ASN.1 Java编译器使用入门

ASN.1 Java编译器使用入门学习任何语言或标记的最好方法莫过于读它的例子。在本节中教程中,我们将引导您创建并运行一个简单的ASN.1应用。更多详细信息,请参阅ASN.1 Java编译器用户指南。安装ASN.1 Java编译器点击 这里 查看如何下载和安装的ASN.1 SDK和ASN.1 C++编译器插件的说明。设置License Key申请一个试用License或从ASN Lab网站购买一个...

weixin_39571749的博客 805

REST-meta-MDD Data总结

sMRI数据使用:nwc1、nwc2、nwc3(同样数据集相关论坛中有相关信息指向需要使用wc1、wc2、wc3)多方咨询与讨论后决定使用nwc数据,这里说明wc数据相对wc数据要大的多如wc1的大小为1.33GB,而nwc1的数据却有6.90GB。VBM文件:/REST-meta-MDD/Sharing/REST-meta-MDD-VBM- phase1 -Sharing.tar.gz。1、Excel中的表型信息:1-男,2-女;-9999或空白表示缺少数据。

2404_88295660的博客 1539

ASN.1入门(超详细)

ASN.1简介 ASN.1(Abstract Syntax Notation dotone),抽象语法标记1。是定义抽象数据类型形式的标准,描绘了与任何表示数据的编码技术无关的通用数据结构。抽象语法使得人们能够定义数据类型,并指明这些类型的值。抽象语法只描述数据的结构形式,与具体的编码格式无关,同时也不涉及这些数据结构在计算机内如何存放。 ASN.1基本语法规则 在ASN.1中,符号的 定义没有...

笑不语的博客 2万+

Vivado SDK中LWIP库版本冲突与RTL8211FDI兼容性实战解析

本文深入解析Vivado 2019.1 SDK中LWIP 1.0库与RTL8211FDI千兆PHY芯片的版本冲突问题,并提供实战解决方案。通过手动移植高版本LWIP库、整合第三方驱动及优化BSP配置,有效解决了以太网通信兼容性问题,确保千兆性能稳定运行。

ios99的博客 273

rk3399开发环境的介绍

由于Bluez的介绍文档有限,以及对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度,学习曲线也相对较陡,所以我有了这个想法,专门对Bluez做一个系统性的介绍,尽可能的涵盖所有内容。

朝气蓬勃 711

oracle自带编译器如何使用,ASN.1 C编译器使用入门

ASN.1 C编译器使用入门学习任何语言或标记的最好方法莫过于读它的例子。在本节中教程中,我们将引导您创建并运行一个简单的ASN.1应用。更多详细信息,请参阅ASN.1 C编译器用户指南。安装ASN.1 C编译器点击 这里 查看如何下载和安装的ASN.1 SDK和ASN.1 C编译器插件的说明。设置License Key申请一个试用License或从ASN Lab网站购买一个永久License。 ...

weixin_27419879的博客 401

7.12真题华为OD机试真题 新系统 - 字符串压缩编码 (Java/Py/C/C++/Js/Go)

7.12真题华为OD机试真题 新系统 - 字符串压缩编码 (Java/Py/C/C++/Js/Go)

算法大师! 839

ASN.1入门介绍

ASN.1

liudong200618的博客 3414

[SV]SystemVerilog状态机实现案例

本文介绍了SystemVerilog中状态机的实现方法。首先使用枚举类型定义状态(TOP_HIB、TOP_BG、TOP_LDO、TOP_NOR),然后通过三个主要任务实现状态机:1)格式化现态寄存器处理状态转换;2)描述状态转移条件,包括计时器和稳定时间判断;3)基于当前状态和输入信号确定次态。状态机在时钟边沿或复位时更新状态,实现了从休眠到正常工作状态的转换逻辑,包含电源稳定时间检测等关键功能。

元直的博客 2021

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

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

ASN.1 轻松入门

可以是正数,也可以是负数。它们也可以当作 C 语言中的 void 指针或 Go 语言中的空接口(interface{})使用,表示数据虽然存在内部结构,但该结构只在别处定义,与 ASN.1 的类型系统无关。本文将首先介绍 ASN.1 使用的类型与语法,然后再介绍 ASN.1 定义的对象是如何编码的。编码将二进制字节转化为一连串的字母、数字、“+”和“/”符号,并在头尾加入“-----BEGIN CERTIFICATE-----”与“-----END CERTIFICATE-----”两行文字以示分隔。

serene的博客 1243

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

ASN.1入门

一、介绍 Abstract Syntax Notation One (ASN.1)是一种独立于机器的描述语言,用于描述在网络上传递的消息  标准包括:  ISO 8824-1 | ITU-T X.680: Specification of basic notation,   ISO 8824-2 | ITU-T X.681: Information object specificatio

shanshu12的专栏 1357

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ASN.1/BER/DER编码子集入门指南(转)

原文地址:http://hi.baidu.com/ling1026/blog/item/c93972af17039ef3fbed5034.html 摘要:本 笔记提供了关于OSI提出的 ASN.1(Abstract Syntax Notation One)/BER(Basic Encoding Rules) /DER(Distinguished Encoding Rules)的...

weixin_33871366的博客 906

10043.ASN.1/BER/DER编码子集入门指南

ASN.1/BER/DER编码子集入门指南(一)RSA实验室技术笔记作者:Burton S.Kaliski Jr.最终修订日期:Nov 1,1993翻译:David(David@javaresearch.org),2002年6月摘要:本笔记提供了关于OSI提出的ASN.1(Abstract Syntax Notation One)/BER(Basic Encoding Rules)/DER(Dis

2386

ASN.1 轻松入门2

BIT STRING、OCTET STRING、UTCTime、GeneralizedTime 还有各种字符串类型既可以是单一字段,也可以是复合字段,在 BER 中编码者可以自行决定, 但在 DER 中凡是单一、复合均可的类型都必须用单一字段。例如,以十六进制表示的字节 02 03 01 00 01 表示一个 INTEGER(02 就是 INTEGER 类型对应的标签),长度是 03,后面的 3 个字节 01 00 01 则是数据。但这 7 位都是 0,说明长度要用 0 个字节来表示,这是不允许的。

serene的博客 1032

ASN.1 常用类型 编码详解 入门

编码结构 下面说明的均为简单的类型的数据结构,也就是primitive类型,constructed类型不做讨论。 BER – Basic encoding rules 基础编码规则 组成部分: 标识符(Identifier) 长度(Length) 内容(Content) 编码结构如下图所示: 我们可以称上面这样组成的数据结构为 标签(tag) 。 标识符 Identifier 标识符...

q1009020096的博客 2万+

ASN.1 Java编译器使用入门

这篇博客是参照ASN.1 Java编译器使用入门这篇介绍来的。安装插件以及下载运行时环境都是必须的,前面一篇博客介绍了,直接在java语言中定义asn.1实体类,这里,从asn文件开始,通过编译生成java类,然后通过asnrt环境来进行asn.1编解码共工作。 1、在eclipse中安装asn.1插件,这样,就可以创建asn.1的工程和模块了。打开eclipse,依次选择Help->Install New Software->填入 :http://www.asnlab.com...

feinifi的博客 3140

ASN.1、BER和DER的PKCS相关子集入门介绍

此翻译文件对 ASN.1、BER 和DER 的PKCS相关子集进行介绍,目的是提供足够的背景知识以便让外行人都能够理解和实施 PKCS 系列标准。

Reflection_in_water的博客 3135

ASN.1编码详解:从入门到代码实战

ASN.1(Abstract Syntax Notation One)是一种用于网络数据传输的抽象标记语言标准,广泛应用于X.509证书、SNMP等协议。它支持多种编码规则:BER(灵活但冗长)、DER(BER的唯一编码子集)、PER(高度压缩)、XER(XML格式)等。ASN.1通过模块化定义数据结构,支持整数、字符串、序列等数据类型,并允许添加数值约束。实际应用中,可通过asn1c等工具实现编解码,如文中展示的矩形数据结构BER编码案例,演示了从Schema定义到编解码实现的全过程。ASN.1的跨平台特

程序员与背包客_CoderZ 1395
上一篇: 15 个 JavaScript Web UI 库
下一篇: ASN.1编码学习笔记 一
ocelight
博客等级 码龄19年 56粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值