类的特性

SAP MM中特性、类 主数据特性、类 相关事务代码: 特性用法:针对产品的特性值细分。 业务场景: 针对物料主数据: 例如: 对于笔记本:物料编码、什么的型号笔记本( 14寸)、颜色、CUP、液晶显示器、尺寸等属性。(界定一个产品特性,首先需要确定维度) 笔记本:物料编码100001(对应描述:15寸、笔记本、CPU I3、显卡11…) 此时发现系统描述不够用,客户希望引入特性: 颜色、... 阅读详情



/*******************************类的继承*******************************/

class Animal
{
 public:
  void eat()
  {
   std::cout << "Animal eat" << std::endl;
  }
 protected:
  void sleep()
  {
   std::cout << "Animal sleep" << std::endl;
  }
 private:
  void fly()
  {
   std::cout << "Animal fly" << std::endl;
  }
};

class Fish : public Animal
{
 public:
  void swim()
  {
   std::cout << "Fish swim" << std::endl;
  }
};

Animal为父类(基类) Fish为子类(派生类);
这是最简单的公有继承
对于外界 只有public的内容可以被访问
对于自己 自己的所有内容可被访问
对于子类 子类可以访问自己的所有内容 而且可以访问父类的public:内容 protected:内容

/*******************************类的封装*******************************/

对于继承的方式和权限:

类的继承特性:    父类的访问特性:     子类的访问特性:
       public:       public:
public:     protected:      protected:
       private:       No access:
------------------------------------------------------------
       public:       protected:
protected:    protected:      protected:
       private:       No access:
------------------------------------------------------------
       public:       private:
private:     protected:      private:
       private:       No access:
------------------------------------------------------------


/*******************************类的多态*******************************/

class Animal
{
 public:
  Animal()
  {
   std::cout << "Animal Construct" << std::endl;
  }
  ~Animal()
  {
   std::cout << "Animal Destruct" << std::endl;
  }
};

class Fish : public Animal
{
 public:
  Fish()
  {
   std::cout << "Fish Construct" << std::endl;
  }
  ~Fish()
  {
   std::cout << "Fish Destruct" << std::endl;
  }
};


构造函数与析构函数:
首先 我们实例化一个Fish fi;
会首先调用父类Animal的构造函数; 然后调用子类Fish的构造函数;
然后析构的时候 会先调用子类的析构函数, 在调用父类的析构函数
运行结果:
Animal Construct
Fish Construct
Fish Destruct
Animal Destruct

/------------------------------------------------------------------------/

如果此时 我们把Animal的构造函数改为Animal( int a, int b );
那么Fish类在构造的时候 就无法调用到父类Animal的构造函数 会报一个错 无合适的构造函数
因为Animal类已经没有默认构造函数了, 所以Fish类无法先构造Animal;
现在解决办法 Fish类的构造函数 改为  Fish() : Animal( 200, 300 )
现在是传递了常量初始化 可以改为 Fish( int a, int b ) : Animal( a, b )
这就是在构造函数之后初始化; 冒号:后 可以初始化 用逗号连接;

/------------------------------------------------------------------------/

如果此时 在Animal类中 写了一个 void Breath();函数
在Fish类中 也写了一个 void Breath();函数 他们返回值 函数名 参数列都一样;
这样就会产生函数的"覆盖"; 当我们继承了一个类的时候 我们可以覆盖一些行为;
此时 对于父类 他还是会调用"自己"的 Breath();函数, 对于Fish子类 他会调用属于"自己"的 Breath();函数

此时 也可以使用作用域解析符号 让子类又使用自己的方法 又使用父类的方法
void Breath()
{
 Animal::Breath();
 std::cout << "Fish" << std::endl;
}

/------------------------------------------------------------------------/

假设有如下两个类:
class Animal
{
 public:
  void Func1();
};

class Fish : public Animal
{
 public:
  void Func2();
  void Func3();
};

int main( int argc, char *argv[] )
{
 Animal an;
 Fish fi;
 return 0;
}

--> 第一类:
最简单的 an可以调用Func1(); fi可以调用Func2(); Fun3();

--> 第二类:
如果设置 an = fi; 结论是: an可以调用Func1(); fi可以调用Func2(); Func3();
先讨论一下内存模型: 对于一个animal类成员an 他的内存模型就是一片连续的内存
而对于一个Fish类成员fi; 他先构造了Animal类对象在构造了自己; 所以他的内存模型是 Animal类内存模型+Fish类内存模型
然后 an = fi; 相当于发生了一个截断, 最后an还是an; 所以并没有实际意义;

-->第三类:
如果设置 fi = an; 这种类型即为小进大 但是也不允许, 因为这是一个类对象 类对象的生成需要进行构造
但是等号并无法进行Fish类内存模型构造 所以这种方式不允许;

/------------------------------------------------------------------------/

假设有如下两个类:
class Animal
{
 public:
  void Func1();
};

class Fish : public Animal
{
 public:
  void Func1();
  void Func2();
};

int main( int argc, char *argv[] )
{
 Animal *an;
 Fish *fi;
 return 0;
}


--> 第一类:
最简单的 an可以调用Func1(); fi可以调用Func1(); Fun1(); (用的都是自己的)

--> 第二类:
如果设置 an = fi; 结论是: an可以调用Func1(); fi可以调用Func1(); Func2();
给一个解释: 首先 对于父类和子类的内存结构 在上面 对于指针类型的赋值
只是把指针4字节的内容强制改变了数据, 至于他指向了什么 这不一定( 或者说这是需要我们来保证的 )
之后 编译器会"按照接收地址的内存模型来解读这个地址"
( 类似如上就是: 把fi的地址给了an; 然后编译器按照an的内存模型来解读了fi )
在这里就会发现: 其实还是一个截断 an的内存模型只有父类部分 所以对an的解读也只有父类部分
所以an可以调用Func1();

-->第三类:
如果设置 fi = an; 这个是不行的 原因同上 an是小 fi是大 小进大 缺的部分无法构造

/------------------------------------------------------------------------/

class Animal
{
 public:
  virtual void Func1();
};

class Fish : public Animal
{
 public:
  virtual void Func1();
  void Func2();
};

int main( int argc, char *argv[] )
{
 Animal *an;
 Fish *fi;
 return 0;
}

--> 第一类:
最简单的 an可以调用Func1(); fi可以调用Func1(); Fun1(); (用的都是自己的)

--> 第二类:
如果设置 an = fi; 结论是: an可以调用Func1(); fi可以调用Func1(); Func2();
如上两种情况所说 其实给进行 an = fi; 其实没啥大用, 因为他们都调用了自己的函数;
但是有一种情况我们是需要解决的 我们希望使用父类的指针来模拟子类的行为
或者说 我们希望使用一根父类的指针 来调用我们在子类里"覆盖"了的函数
那么我们需要使用 "虚函数"; 
这样我们就可以使用一根父类的an指针 然后来模拟在子类中被 "override" 的函数 Func1();
这就是多态, 在未引入"虚函数"之前 父类总会根据内存模型来调用父类的函数;
引入了"虚函数"之后 父类就会(在运行时采用 "迟绑定")去检查 是否有子类override了父类的virtual函数;
然后确定 调用的是哪一个函数 ( 子类的? 父类的?  "子类优先" );

 "多态的实现":
 当编译器发现一个类中有虚函数时;就会为这个类自动生成一个"虚表" ; 该表是一个一维数组,在这个数组中存放每个虚函数的地址
 而且会生成一个"指向虚表指针"; 那么对于父类Animal有一个"虚表", 子类Fish由于一定有虚函数所以也有一个"虚表"
 现在在来结合上面的信息; "编译器按照an的内存结构来解释fi"; 这里就发生了"两个动作": ( an小fi大 才会截断 大给小 ok 小给大 GG )
 第一个是"内存的截断": 这就解释了为什么fi自己的函数 这里用不了了; 因为内存截断了,( 对于an, fi自己的子类部分成垃圾了 )
 第二个是"虚表指针改变": 一开始an的虚表指针应该指向着自己的虚函数, fi的虚表指针也指向了自己的虚函数;
 而此时an指向了fi子类对象 当按照an的内存结构解释fi时 解释到的是fi的"虚表"; 所以调用到了fi的虚函数;
 
 ( 在这里在说一下 int 和 short 之间为什么可以互相等, 但是父类子类不可以互相等;
 在这里 无非就是两种情况 "大进小" "小进大";
 对于基本类型来说 "小进大" 是 "赋值" ; "大进小" 是 "截断";
 对于类来说 "小进大" 没法解释, 报错 ; "大进小" 是 "截断"; ( 这个截断和上面的不太一样, 他截断之后 自己还是自己 );
 对于类的指针来说 "小进大" 同样没法解释; "大进小" 按照 "小的方式解释"; )
 
 
-->第三类:
如果设置 fi = an; 这个是不行的 原因同上 an是小 fi是大 小进大 缺的部分无法构造

/-----------------------------------------------------------------------------/

"虚析构函数":
与上同理 如果使用了父类指针来使用子类override掉的函数,那么会存在一个问题 谁来析构
正常情况下 在"迟绑定"之后 这一根父类的指针会优先指向了子类override后的函数 这没有问题;
那么析构函数呢 对于一个类来说他必然有析构函数 而且无参数,
-->第一种情况:
{
 Fish fi;
 Animal *an = &fi;
}
当主函数中出现这种情况的时候, 不会出现任何问题
an是一根指针 出栈即完蛋, fi是个类对象 出栈会自动调用Fish的析构函数

-->第二种情况:
Fish *fi = new Fish();
Animal *an = fi;
delete an;
当我们希望通过使用一根父类的指针来delete一个子类的对象的时候, 那么就会出现问题;
这根an指针会按照父类an的内存规则来匹配 最后匹配到了父类的析构函数, 所以他会调用到父类的析构函数;
但这是不对的 因为他其实并没有把这个子类对象完全析构 子类对象剩下了一部分继承出来的 会出现意外情况;
所以我们需要"把父类的析构函数也声明为虚析构函数", 当我们检测到需要调用父类的析构函数时 他是一个"虚析构函数"
那么类就会去"迟绑定"他"真正需要的析构函数" 对于一个子类 他真正需要的析构函数是 "子类的析构 + 父类的析构"
在这里就是子类Fish的析构函数 之后在调用自己的析构函数, 这个子类对象就被完全析构了. 这就是虚析构函数存在的意义

/-----------------------------------------------------------------------------/

总结: "虚函数用于想使用父类指针来对子类对象进行某种操作的时候"

/-----------------------------------------------------------------------------/

对于一个类中 有一个函数:
virtual Func1() = 0; 
他是一个纯虚函数, 含有这个函数的类 是一个"抽象类" 他不能实例化对象;
( 对于子类,如果override了这个函数并且实现了他,才可以实例化,否则子类也不能实例化 )




深入理解C++特性类与平台特定特性 本文探讨了C++中的特性类(Traits)的概念和实现,特别强调了特性类在解决重载解析问题、管理类型行为和适应不同平台特性方面的应用。通过实例和代码示例,文章展示了如何利用特性类来实现类型安全和代码复用,并讨论了在不同平台上使用特定API时可能遇到的端口性问题以及解决这些问题的方法。... 阅读详情

相关推荐

基于FPGA的ov5640摄像头简易图像采集装置详解

本文介绍一种基于FPGA的,通过流模式DDR实现OV5640摄像头数据采集并显示的方法。

qq_42230252的博客 1万+

C++ Primer 类的其他特性

Screen表示显示器中的一个窗口。每个Screen包含一个用于保存Screen内容的string成员和三个string::size_type类型的成员,它们分别表示光标的位置以及屏幕的高和宽。除了定义数据和函数成员之外,类还可以自定义树种类型在类中的别名。

专注于C/C++编程语言的博客,如果读者对C/C++语言有任何需要咨询的可以私信联系! 1118

SIMetrix教程-001.SIMetrix软件简介与安装

  由于某些原因需要用到SIMetrix仿真软件,然而网上的资料并不是特别多,故在此记录一下这款仿真软件的学习过程,也给有需要的人提供一些参考,免走弯路。如果使用过Pspice或者LTspice软件,学习SIMetrix会很容易入门,仿真软件都是大同小异的,会一样后都可以快速入门其他软件。   SIMetrix是一款以SPICE模型为基础的仿真软件,集成了SIMetrix和SIMPLIS两款内核,为工程师提供了可靠的、易于使用的、并完美结合了速度与精度的电路仿真方式。官方的话不多说,和LTspice一样,优

gaoyong_wang的博客 2万+

类的其他特性

1. 类的其他特性 这些特性包括: 类型成员 类成员的类内初始值 可变数据成员 内联成员函数 从成员函数返回*this 定义并使用类类型 友元类 1.1 类成员再探 1.1.0 定义一个类型成员(先定义后使用) Screen表示显示器中的一个窗口 string保存Screen内容 三个string::size_type类型的成员,分别代表光标的位置以及屏幕的高和宽 class Screen{ public: //类型成员的定义,类型别名 typedef std::string::size_type

一个搬运知识的笨小孩 726

非标准包 game.rgss3a 的打开方法 | 2023 年实测

生活笔记

陌雨’的博客 1万+

龙虾 Skill 技能库|OpenClaw+Hermes 全集成 一键调用所有 AI 技能

龙虾 Skill 技能库、OpenClaw、Hermes Agent、AI 技能集成、本地 AI 自动化、办公工具、数字员工

weixin_42219287的博客 624

【C++】类(三):类的其它特性

对 C++ Primer 第五版的第七章第三节进行学习与记录。

YGGP的博客 796

【军标】《军用软件计价规范(试行)》和GJB 10162-2021《军用软件计价功能项识别方法》-费用标准解读系列37

2021年2月1日实施的《军用软件计价规范(试行)》(替代了2019年版本)以及2021年3月1日实施的《军用软件计价功能项识别方法》(GJB 10162-2021),是我们平时在军用软件造价咨询中进行软件规模度量、计价和审价的主要依据。《军用软件计价规范(试行)》(4号文)的附件1为《军用软件功能规模度量方法》,即4号文本身包含对软件规模测试的方法(功能点方法主要参考NESMA等国际标准)、规模度量过程、功能点计数和计算规则等相关说明。(四)软件研发费用=软件研发工作量x软件研发人月综合费率。

xiaosenyouli的博客 6124

c# 特性类的使用

程序员有的时候需要给对象字段添加一下特性(如字段描述信息),然后在程序中得到这些信息,c#中特性类使用如下: 自定义特性类:(必须派生自System.Attribute特性类) public class discription : System.Attribute { public string discription1; public str...

akxgxt3856的博客 143

SC-FDMA

<br />SC-FDMA(Single-carrier Frequency-Division Multiple Access,單載波分頻多工),是LTE的上行鏈路的主流多址。<br />SC-FDMA是單波載(Single-carrier),與OFDMA相比之下具有的較低的PAPR(峰值/平均功率比,peak-to-average power ratio),比多載波的PAPR低1-3dB左右(PAPR是由于多載波在频域叠加引起)。更低的PAPR可以使行動終端(mobile terminal)在發送功效方面

jod的专栏 3299

RK3576 调试ov2735 mipi-csi摄像头

摘要:本文记录了基于RK3576平台调试OV2735 MIPI摄像头的全过程。开发环境采用Linux 6.1内核和Buildroot文件系统。调试步骤包括:1)硬件检查(电源、晶振和引脚连接);2)驱动配置(设备树节点、ISP通道设置);3)驱动验证(通过ID检测和I2C工具测试);4)推流测试(使用v4l2和gstreamer工具)。重点解决了复位引脚配置、时钟命名匹配等关键问题,并通过寄存器检查确保初始化正常。最终实现了摄像头数据流的成功输出,为嵌入式视觉应用开发提供了完整参考方案。

qq_45147279的博客 1061

java语言类的特性

Java 通过访问控制、构造方法、静态成员、对象引用机制等实现类的封装与复用,自动装箱 / 拆箱简化基本类型操作,垃圾回收机制保障内存高效管理。开发者需理解不同特性的适用场景,合理设计类结构并优化性能。方法名必须与类名完全相同。没有返回类型(连void也不写)。可包含参数列表,用于接收初始化数据。示例// 构造方法name = n;age = a;引用传递机制对象赋值和参数传递均为引用传递,操作会影响原对象。数组与对象结合类类型数组存储对象引用,需先初始化数组再初始化元素。

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 768

嵌入式软件工程师面试题目整理(一)

文章目录嵌入式软件工程师面试题目整理(一)Arm有多少32位寄存器?Arm2440和6410有什么区别CPU,MPU,MCU,SOC,SOPC联系与差别上拉&下拉&高阻态串口协议讲一讲RS232和RS485通讯接口有什么区别IIC时序图画一下,IIC有哪些状态,给一个字节,将它发送出去。IIC有什么注意事项?有没有用I/O模拟IIC,如果有需要注意什么?为什么2440的内存起始地址是3后面7个0呢?为什么6410的内存起始地址是5后面7个0呢?内存管理有什么看法?(MMU)锁有哪些?有什么注

嵌入式与Linux那些事的博客 7883

Matlab Handle 类和 Value 类以及类的特性

matlab self

weixin_39354845的博客 1367

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

特性类的使用

特性类从抽象类System.Attribute派生的类。可附加到各种程序实体,而且在运行时环境中可以检索这些特性信息。1.         AttributeUsage类施加在自定义特性类上的特性,控制自定义特性的使用。[AttributeUsage(System.AttributeTargets,   AllowMultiple,   Inherited)](1)      

gythlover的专栏 527

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

C#特性类的使用

特性类的使用过程: 第一步:定义一个特性类,定义一些成员来包含验证时需要的数据; 第二步:创建特性类实例; 创建一个特性类的实例,里面包含着验证某一个属性或者字段需要的数据。 将该实例关联到某个属性上面。 第三步:使用特性类实例 可以通过调用某个类型的GetProperties()方法,获取属性, 然后调用类型属性成员的GetCustomAttributes()方法,获取该属性关联的特性类实例,...

weixin_42339460的博客 1493

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C# 特性类[笔记]

C# 特性类[笔记]Attribute(自定义特性类)声明自定义特性类使用自定义特性类Conditional阐述使用Obsolete附加[Authorize] Attribute(自定义特性类) 声明自定义特性类 表示目标结构的状态 添加一个类,以Attribute结尾 这个类继承 system.Attribute 声明为私有类(sealed) 定义需要描述的字段和属性 AttributeUsage() 里面的值为该特性可以应用到那些结构上 AttributeTargets为枚举类型 [Attribut

Devout-mzc 510

类的三大特性

类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今天就来看一下OC中类的三大特性: 一、封装 学习过Java中类的同学可能都知道了,封装就是对类中的一些字段,方法进行保护,不被外界所访问到,有一种权限的控制功能,Java中有四种访问权限修饰符:public,default,protected,private,访问权限一次递减的,这样我们在定义类的时候...

weixin_34379433的博客 89

类的其它特性

因为静态数据成员在定义性说明时已分配了存储空间,所以通过静态数据成员名前加上。

baobao1767640830的博客 813

C#特性类的使用 (结合反射应用)

转自:https://www.cnblogs.com/wllhq/p/4634410.html 特性类的使用过程:第一步:定义一个特性类,定义一些成员来包含验证时需要的数据;第二步:创建特性类实例;创建一个特性类的实例,里面包含着验证某一个属性或者字段需要的数据。将该实例关联到某个属性上面。第三步:使用特性类实例可以通过调用某个类型的GetProperties()方法,获取属性,然后调用类型属性成...

weixin_34417814的博客 301

定制PivotGridControl特性类

定制PivotGridControl特性类 轻点鼠标 2019-02-20 16:01:46 141 收藏 展开 前言 在EF架构中使用PivotGridControl控件要绑定数据源时,每一次都要去后台查询出需要的数据集,然后甄选出我们需要的用以pivotgridcontrol所绑定的数据源的字段,接着定义一个个的PivotGridField,最终添加到一个List<PivotGr...

cxu123321的博客 366
上一篇: 正则表达式
下一篇: 位域的使用
zhang_yao_wu1993
博客等级 码龄12年 0粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值