《ASCE1885的IT笔试面试题》---0000 0004

面试题总结0002 一.判断题 1.程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。(对) 2.类的静态数据成员需要在定义每个类的对象时进行初始化。(错)   解析:类的静态数据成员需要在类体外进行初始化。静态数据成员对于所有类对象来说只有一份,因此不能在类体内随着每个类对象的初始化而初始化,而是需要在全局数据空间中进行单独的初始化,并且只能存在一份实例。 阅读详情

一、   对错题。判断以下说法的正确性,在下面表格中对应的编号下面写上“对”或“错”。(20分,每个题目2分)

题号

1

2

3

4

5

6

7

8

9

10

对/错

对

错

对

错

错

对

错

对

错

对

1.  说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返回值类型就可以了。

2.  所有的表达式都有值。

3.  程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。

4.  类的静态数据成员需要在定义每个类的对象时进行初始化。

5.  基类中被说明为protected和private的成员只能被其派生类的成员函数访问,不能被其它的函数访问。(别忘了友元)

6.  当将一个类S定义为另一个类A的友元类时,类S的所有成员函数都可以直接访问类A的所有成员。

7.  当函数的返回值是数组类型的,传递的是数组第一个元素的地址。

8.  如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么,这个函数自动继承基类中虚函数的特性。

9.  字符串“hello,world”在内存中存放时,占用11个字节的空间。(0结束符不能丢)

10. 用new动态申请的内存空间,必须用delete来释放 。

------------------------------------------------------------------------

 

二、简单编程题。根据程序要求,写出函数的完整定义。(共25分)

1.(本小题15分)写一个函数,找出给定字符串中数字字符(即’0’—‘9’这10个数字)的个数(如字符串”olympic2000”中数字字符的个数为4个。函数的原型为:

   int CalcDigital(char *str);

  函数参数:str为所要处理的字符串。

  函数返回值:所给字符串中数字字符的个数。

  int CalcDigital(char *str)

  {

//在下面写出程序的实现 

  }

1.  程序为:

int CalcDigital(char *str)

{

  //判断字符指针是否为空

  if(str==NULL)

         return 0;

  //记录数字字符个数的变量

  int num_of_digital=0;

  //依次检查各个字符,如果是数字,则总数加1

  for(int i=0; str[ i ]!=0x0; i++)

         if(str[ i ]<='9' && str[ i ]>='0')

                   num_of_digital++;

  //返回数字字符个数

  return num_of_digital;

}

 

2.(本小题10分)用递归函数完成以下运算:

sum(n)=12+22+…+n2

函数的原型如下:

    long sum(int n);

该函数完成12+22+…+n2的运算,并返回运算结果,其中n>0。

提示:你可以使用递归表达式:sum(n)=sum(n-1)+n2

long sum(int n)

{

}

 

2. 程序为:

long sum(int n)

{

  if(n==1)

         return 1;

  else

         return n*n+sum(n-1);

}

 

三、             (本小题30分)

  下面的文件queue.h是一个队列类模板Queue的完整实现。在这个文件中首先定义了一个队列元素类模板QueueItem,然后在这个类的基础上定义了队列类模板Queue。在Queue中使用链表存放队列的各个元素,front指针指向链表的第一个节点元素,back指针指向链表的最后一个节点元素,成员函数add()将一个新节点元素加入到队列结尾,remove()从队列开头删除一个节点元素。为方便起见,程序中加上了行号。阅读程序,根据程序后面的问题作出相应解答。

/*****************文件queue.h**************************************/

/******************************************************************/

1           template<class Type>

2           class Queue;

3           /**********定义模板类QueueItem*******************************/

4           template <class Type>

5           class QueueItem

6           {

7             public:

8               QueueItem(const Type &elem):item(elem){}

9               QueueItem(){}

10          private:

11            Type item;

12            QueueItem *nextItem;

13            friend class Queue<Type>;

14        };

15        /***************定义模板类Queue*****************************/

16        template<class Type>

17        class Queue{

18          public:

19            Queue():front(NULL),_______(A)_______{}

20            ~Queue();

21            Type remove();

22            void add(const Type &);

23            bool is_empty()const {return  ____(B)____;}

24          private:

25            QueueItem<Type> *front;

26            QueueItem<Type> *back;

27        };

28        //模板类Queue的函数成员remove()的实现

29        //从队列头取出一个节点,并返回该节点的值

30        template<class Type>

31        Type Queue<Type>::remove()

32        {

33          QueueItem<Type> *pFront; //指向头节点的临时指针

34          Type retVal;  //返回值

35           ____(C)____;

36          retVal=pFront->item;

37          front=pFront->nextItem;

38          delete  pFront;

39          return  retVal;

40        }

41        //模板类Queue的函数成员add()的实现

42        template<class Type>

43        void Queue<Type>::add(const Type& newItem)

44        {

45          QueueItem<Type> *pNew=new QueueItem<Type>;

46          pNew->item=newItem;

47          ____(D)____;

48          if(front==NULL)

49            front=back=pNew;

50          else

51          {

52             back->nextItem=pNew;

53             ____(E)____;

54           }

55        }

56        

57        template <class Type>

58        Queue<Type>::~Queue()

59        {

60          QueueItem<Type> *p=front, *q;

61          while(p!=NULL)

62          {

63             q=p->nextItem;

64             delete p;

65             p=q;

66           }

67        }

问题1:(每个填空3分,共15分)程序中有几处填空,将它们完成。

(A)______________________________________________

(B)______________________________________________

(C)______________________________________________

(D)______________________________________________

(E)______________________________________________

 

问题2:(本小题3分)题中程序第1、2行为什么要说明一下类模板Queue?如果没有这两行语句,程序还正确吗?

答:

问题3:(本小题4分)程序第22、23行各有一个const,它们各自表示什么含义?

答:

问题4:(本小题3分)程序中模板类Queue的析构函数主要做了什么事情?为什么要这么做?

答:

问题5:(本小题5分,每答对一个给1分)下面的程序使用了queue.h文件中定义的类模板,说明程序中哪些定义队列对象的语句是不正确的,哪些是正确的?

#include “queue.h”

void main()

{

  Queue  q1;                                  //1

  Queue<int> q2;                      //2

  Queue<int> q3(100);             //3

  Queue<int> q4[100];             //4

  Queue<int> q5=new Queue<int>;   //5

  //…

  delete q5;

}

 

答:

语句号

1

2

3

4

5

对/错

 

 

 

 

 

答案:

问题1:答案为:

(A)back(NULL)

(B)front == NULL 或 back == NULL

(C)pFront = front

(D)pNew->nextItem = NULL

(E)back = pNew

问题2:

答:不正确。因为在类QueueItem模板类的定义中用到了模板类Queue,而此

时Queue还没有定义,所以要先声明一下,告诉编译程序Queue是一个模板类

,它将在程序的其他地方定义。如果没有这个说明,编译程序就不知道标识

符Queue代表什么样的含义了。

问题3:

答:第22行的const修饰的是函数的参数,表示在这个函数体中不能改它所修

饰的参数所对应的实际参数的值。

第23行的const修饰的是模板类Queue的成员函数is_empty(),它表示在函数i

s_empty()的函数体中不能改变任何数据成员的值。

问题4:

答:析构函数中主要是释放链表中存放的各个节点的空间。因为Queue对象在

其生存期间可能加入了很多节点,从堆中申请了一些内存空间,这些空间应

该随着对象的消亡而释放掉,所以需要在析构函数中来释放这些空间。

问题5:

语句号

1

2

3

4

5

对/错

 错

对 

错 

对 

对 

四、             (本小题16分)阅读下面的程序,写出程序运行的结果。

/*************************************************************/

#include <iostream.h>

class A{

private:

  //其它成员

public:

  virtual void func(int data){cout<< "class A:"<<data<<endl;}

  void func(char *str){ cout<<"class A:"<<str<<endl; }

};

 

class B: public A{

//其它成员

public:

  void func() {cout<<"function in B without parameter! /n";}

  void func(int data) { cout<<"class B:"<<data<<endl; }

  void func(char *str){ cout<<"class B:"<<str<<endl;}

};

int main(int argc,char *argv[])

{

  A *pA;

  B b;

  pA=&b;

  pA->func(1);

  pA->func("haha");

  return 0;

}

/*******************************************************************/

问题1:(本小题4分)在下面写出程序的运行结果:

 

问题2:(本小题2分)如下句所示,在函数main()中通过pA调用类B中定义的参数表为空的函数func() :

  pA->func();

是否正确?

答:(正确/不正确)

 

 问题3:(本小题10分)如果要记录已尼创建的A类的实例(对象)的个数,我们可以借助于类的静态成员。修改上面类A的定义,使得它包含一个私有的静态成员object_count,记录属于该类的对象的个数,然后为类A增加必要的成员函数,使得下面的程序:

void main()

{

  A *pA=new A[3];

  cout<<"There are "<<pA->GetObjectCount()<<"objects"<<endl;

  delete []pA;

  cout<<"There are "<<A::GetObjectCount()<<"objects"<<endl;

}

得到的输出为:

There are 3 objects

There are 0 objects

在下面写出类A的定义(将所有的函数成员实现写在类定义体中):

  

在下面写出初始化类的静态成员object_count的语句:

答案:

问题1:

答:输出结果为:

class
 B: 1

class
 A: 
haha

问题2:

答:不正确。

问题3:类A的定义如下:

class A{

private:

  static object_count;

  //其它成员

public:

         A(){ object_count++;}

         ~A(){ object_count--; }

         static int GetObjectCount(){ return object_count; }

         //其它函数

         virtual void func(int data){cout<<"class A: "<<data<<endl; }

         void func(char *str){ cout<<"class A: "<<str<<endl; }

};


object_count
的初始化语句如下:
int
 A::object_count=0;

 

五、(本题共9分)

下面的程序定义了一个简单的SmallInt类,用来表示从-128到127之间的整数。类的唯一的数据成员val存放一个-128到127(包含-128和127这两个数)之间的整数,为了方便,类SmallInt还重载了一些运算符。阅读SmallInt的定义,回答题目后面的问题。

 

class SmallInt{

public:

         SmallInt(int i=0);

         //重载插入和抽取运算符

         friend ostream &operator<<(ostream&os,const SmallInt &si);

         friend istream &operator>>(istream &is, SmallInt &si);

 

         //重载算术运算符

         SmallInt operator+(const SmallInt &si){return SmallInt(val+si.val);}

         SmallInt operator-(const SmallInt &si){return SmallInt(val-si.val);}

         SmallInt operator*(const SmallInt &si){return SmallInt(val*si.val);}

         SmallInt operator/(const SmallInt &si){return SmallInt(val/si.val);}

         //重载比较运算符

         bool operator==(const SmallInt &si){return (val==si.val);}

private:

         char val;

};

 

SmallInt::SmallInt(int i)

{

         while(i>127)

                   i-=256;

         while(i<-128)

                   i+=256;

         val=i;

}

 

ostream &operator<<(ostream &os,const SmallInt &si)

{

         os<<(int)si.val;

         return os;

}

 

istream &operator>>(istream &is,SmallInt &si)

{

         int tmp;

         is>>tmp;

         si=SmallInt(tmp);

         return is;

}

问题1:(本小题4分)上面的类定义中,重载的插入运算符和抽取运算符被定义为类的友元函数,能不能将这两个运算符定义为类的成员函数?如果能,写出函数原型,如果不能,说明理由。

答:

 

问题2:(本小题5分)为类SmallInt增加一个重载的运算符’+=’,函数原型:

class SmallInt{

public:

         SmallInt &operator +=(const SmallInt &si);

         //其它函数

private:

         char val;

};

该函数将返回对当前对象的引用。如:

SmallInt si1(20),si2(13);

则表达式:

  si1+=si2

将返回对象si1的引用,并且si1中的的值是si1.val和si2.val的值之和(但必须正规化为在-128至127之间)。

在下面写出重载的运算符+=的实现:

答案:

问题1:

答:不能将插入运算符和抽取运算符定义为类的成员函数。

因为这两个运算符对第一个运算数有特殊的要求,即必须分别是ostream和istream类的对象,而不能是用户自己定义的其它类,而类的成员函数默认的第一个参数为指向该类对象的指针类型,所以不符合插入和抽取运算符的要求。

问题2:

重载的运算符的实现如下:

SmallInt &SmallInt::operator+=(const SmallInt &si)

{

         SmallInt tmp(val+si.val);

         val=tmp.val;

         return *this;

}

或
SmallInt &SmallInt::operator+=(const SmallInt &si)

{

         val+=si.val;

         if(val>127)

                   val-=256;

         if(val<-128

                   val=256;

         return *this;

}

 

 

深度学习赋能胶囊内镜:AI如何实现胃肠道出血的自动检测与分割 在计算机视觉领域,图像分类与目标检测是处理医学影像分析的核心技术。其原理在于通过卷积神经网络(CNN)自动学习图像中的多层次特征表示,实现对特定目标的识别与定位。这项技术的价值在于能够将医生从海量、重复的阅片工作中解放出来,提升诊断效率与一致性,尤其在处理如胶囊内镜产生的数万张连续图像时优势显著。其应用场景广泛覆盖了医学影像的辅助诊断,例如在消化内科,对胃肠道出血的早期发现与精准定位具有重要临床意义。本文聚焦于利用深度学习模型,如U-Net和EfficientNet,构建一个能够从复杂多变的胶囊内镜图像中, 阅读详情

相关推荐

pta c++ 判断题

pta c++ 判断题 类与对象 数据共享与保护 数组 指针 字符串 继承与派生 多态性 群体类和群体数据的组织 泛型程序设计 流类库与输入输出 异常处理 stl 面向对象程序设计 成员函数 构造函数 析构函数 类的组合 作用域 静态 动态 友元 常对象 多文件结构 对象数组 this指针 动态内存分配 引用 虚函数 抽象类 运算符重载 函数模板 类模板 容器

weixin_62566689的博客 3660

Astah 9.0升级步骤(Widnows/Mac OS)

Astah Professional是一款全新的轻量级UML建模工具。软件集思维导图和UML建模于一体,采用100%纯JAVA构建, 兼容性强,不仅能够实现分布式建模、项目合并,还能够实现和其它建模工具的交互。

tequiero777的博客 2824

C++程序设计语言笔记——抽象机制:实例化

让编译器自动生成特例化版本需确保模板定义对使用处可见,依赖隐式实例化机制。显式实例化或extern用于特定优化场景。在 C++ 模板编程中,微妙的上下文依赖(如隐式依赖外部符号、包含顺序、宏定义或特定命名空间)可能导致模板在不同环境或使用场景中行为不一致,引发难以调试的错误。1. 显式包含所有依赖的头文件确保模板定义内部使用的所有符号(类型、函数等)在其头文件中被显式包含,不要依赖用户代码的包含顺序。在C++模板编程中,名称查找遵循严格的作用域规则和实参依赖查找(ADL)机制。

梅见十柒的博客 1129

zedboard(5)spi轮询和中断

一个SPI可以有几个从设备 在程序中使用 s32 XSpiPs_SetSlaveSelect(XSpiPs *InstancePtr, u8 SlaveSel) 选择。其实就是吧对应设备的ss拉低。 备注:只选一个ss,可以不用指定。(感觉,还没测试) 这是xspips.c中定义的函数,发送和接收有 XSpiPs_Transfer 和 XSpiPs_PolledTransfer 两个函数,分别采用中断和轮询模式。    一、轮询模式 米联客参考代码,SpiPs_Init中部分和官方例程流程一样,Spi

Kiss丶小坏 5889

EDA与机器学习融合:智能优化芯片设计流程的工程实践

机器学习作为数据驱动的核心技术,通过从历史数据中学习复杂模式,实现对系统行为的预测与优化。其原理在于构建模型,将输入特征映射到目标变量,从而揭示数据背后的内在规律。在工程领域,这项技术的核心价值在于能够将专家经验转化为可量化、可复用的智能模型,显著提升自动化水平与决策效率。电子设计自动化(EDA)是芯片设计的关键支撑,传统流程高度依赖人工试错,面临参数空间巨大、优化周期长等挑战。将机器学习应用于EDA,能够构建预测模型来预估设计性能(PPA),或通过代理模型加速设计空间探索,实现智能化的设计辅助与优化。本文

weixin_30411239的博客 684

我是递归盲~~~

奈何~~我对递归完全没办法~各种不理解~~我决定把各种简单的复杂的递归题都放在这~~我就看就想就调试~我不信了,我还能被递归吓死!!! 一.函数pow(x,y)实现运算x^y,即x的y次方,这里x和y都为整数。 算法的基本思想是,减少乘法次数,重复利用结算结果,例如: x^4,如果逐个相乘的话,需要四次乘法。如果我们这样分解(x^2)*(x^2)就只需要2两次乘法,因为x^2的结果我们可

vivi_wang_11的专栏 1545

STM32CubeMX+FreeRTOS+CAN总线+传感器实战:多任务系统与通信融合开发详解

本文详细介绍了基于STM32CubeMX和FreeRTOS的CAN总线与光电传感器融合开发实战。通过多任务系统设计,实现传感器数据采集与CAN通信的协同工作,提供完整的配置例程和调试技巧,适用于工业控制与机器人感知等应用场景。

n2o3p4的博客 734

计算机原理及接口技术题目,微机原理及接口技术-习题答案

微机原理及接口技术习题及答案 ·9·(2)MOV AX,0 MOV BX,1 MOV CX,100 A: ADD AX,BX INC BX LOOP A HLT解:AX=8080H BX=0101H14. 编写程序段,实现下述要求:(1) 使AX寄存器的低4位清0,其余位不变。 (2) 使BX寄存器的低4位置1,其余位不变...

weixin_33513255的博客 1731

AUTOSAR系统服务篇 - BswM的使用

本文档是对4.0.3版及更高版本的AUTOSAR模式管理应用的介绍。其主要目的是为AUTOSAR的用户和开发人员提供基于示例的AUTOSAR模式管理不同方面的详细概述,这些示例在文中进行了解释。本文中的代码清单共同构成了示例ECU的配置。第2章解释了基础的模式管理概念,例如一般的模式、如何实现模式切换、模式管理者和模式用户的角色等。其次介绍了应用模式管理和基础软件模式管理的依赖关系,两者密切相关。基础软件模式管理器是AUTOSAR R4.0中的中央模式管理模块。它具有很高的可配置性。

IOT2017的博客 846

TPAMI 2025 | 从缺失碎片到杰作:基于上下文自适应扩散的图像修复

图像修复是一项具有挑战性的任务,尤其是要确保生成的内容与图像的现有部分无缝融合。尽管最近的扩散模型展现出了潜力,但它们在保持已知区域和未知(缺失)区域之间的连贯性方面常常遇到困难。这个问题源于扩散过程中缺乏明确的空间和语义对齐,导致生成的内容无法与原始图像平滑融合。此外,扩散模型通常依赖全局学习分布,而非局部特征,这使得生成的图像部分与现有图像部分之间存在不一致。在这项工作中,作者提出了ConFill,这是一个新颖的框架,引入了上下文自适应差异(CAD)模型,以确保在整个扩散过程中,已知区域和未知区域的中间

小白学视觉 240

编写一个汇编语言程序,将字符串"Hello World"中的全部小写字母转换为大写字母,并存放回原地址处。

编写一个汇编语言程序,将字符串"Hello World"中的全部小写字母转换为大写字母,并存放回原地址处。 P176 4.10 编程思路:首先DATA段中,定义string存放字符串"Hello World",LEN为字符串string长度;其次,BX获取string的有效地址,将string存放的字符串赋值给AL,通过AL进行与’a’和’z’这个范围进行比较,若在该范围表示为小写字母,则需要转换...

beyond谚语的博客 7659

2026年北京君正数字IC笔试试卷带答案

本文摘要:该文档是一份数字IC设计相关的考试试题,包含单选题、多选题、波形分析题和代码设计题。内容涵盖时序约束、半导体工艺、状态机设计、逻辑综合、异步FIFO设计等知识点。试题解析详细,重点考察数字电路基础、时序分析和Verilog代码实现能力。典型题目包括多周期路径设置、Moore/Mealy状态机区别、同步复位与异步复位特性、RISC-V架构特点等,并提供了异步FIFO的Verilog实现参考代码。(149字)

Open 112

太原理工大学 微型计算机实验,太原理工大学微机原理实验报告

太原理工大学微机原理实验报告 本科实验报告 课程名称: 微机原理及应用 实验项目: 实验地点: 专业班级:机械 xxx班 学号:xxxxxxxxxx 学生姓名: xx 指导教师: 2016年 12月 28日 实验一 汇编语言程序开发环境与程序调试 一、实验要求和目的 1.熟悉在微机上编辑、汇编、连接、调试和运行汇编语言程序的过程,掌握 PC 环境 下命令行方式的特点。 2.熟悉汇编过程中一些常见出...

weixin_39893042的博客 526

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

递归解决12+22+···+n2

递归

MDtime的博客 1012

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

常见重点题目

常见重点题目 请编写一个函数long sum(int n),用递归函数完成运算: sum(n)=11+22+…+n*n,递归表达式为sum(n)=sum(n-1)+n2。 请勿修改主函数main和其他函数中的任何内容,仅在函数sum的花括号中填写若干语句。 #include using namespace std; long sum(int n) { int sum=0; while(n&gt...

qq_43563862的博客 322

深度学习工具包 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++知识点11——this指针,const成员函数,访问权限控制

1.this指针 每个类都有this指针,this指针指向this指针指向的是类的对象本身 class A { public: A() {} ~A() {} void func() {cout<<this<<endl;} }; int main(int argc, char const *argv[]) { A t1,t2; cout<<&t1<<endl; t1.func(); cout<<&t2<&l

Master Cui的博客 1181

C知识回顾(《C程序设计语言 The C Programming Language》)

1.单引号中的字符表示一个整形值,我们称为字符常量。例如,'\n'是单个字符,"\n"是只包含一个字符的字符串常量。

XSunrise的专栏 1272

C++技能测试试卷一

C++技能测试试卷一 姓名______ 联系电话________________ Email________________ 学校______________ 专业_______________ 学历______ 英语水平_____ 类别:□国家统招 □成教 □自考 □网络教育 其它___________ 第一部分:基础部分 考试时间:120分钟 考试成绩___________ 计算机基础部分 选择题 (每题2分,共60分) 1.下列关于栈的叙述正确的是: A.栈是非线性结构 B.栈是一种树状结构 C.栈具

chenleismr的专栏 3732

数组作为方法返回值_返回地址

一个方法可以有多个参数,但是只能有0或者一个返回值,不能返回多个值 如果希望一个方法中产生的多个数据都进行返回,该怎么办嘞 解决方案------------------------使用一个数组作为返回值类型即可。 代码实现 public class ArrayDemo04 { public static void main(String[] args) { int[] result =calculate(10,20,60);//这里要用数组接收这个变量 Syste

喻师傅的学习笔记 517

[转载]函数返回值为数组以及数组作为参数传递的问题

函数返回值 数组

江东风又起 1125

将数组作为参数,调用该函数时候给的是数组地址还是整个数组

1、在实际的应用中,数组经常作为函数参数,将数组中的数据传递到另外一个函数中,一般来说,传递可以采用两种方法:1&gt;、数组元素作为函数的实参时,用法跟普通变量作参数相同,将数组元素的值传递给形参时进行函数体调用,函数调用完返回后,数组元素的值不变。这种传递方式是”值传递“方式,即只能从实参传递给形参,而不能从形参传递给实参。2&gt;、数组名作为函数的参数,当用数组名作为函数的实参和形参时,传...

向阳生长,为梦想而活 2万+

函数地址经典基础C++笔试题(附答案)

PS:今天上午,非常郁闷,有很多简略基础的问题搞得我有些迷茫,哎,代码几天不写就忘。目前又不当COO,还是得用心记代码哦! 一、选择题 1. 若用数组名作为函数调用时的实参,则实际上传递给形参的是( A ) A. 数组首地址 B. 数组的第一个元素值 C. 数组中全部元素的值 D. 数组元素的个数 2. 有关函数重载的正确说法是( B ) A. 函数名不同,但参数的个数和类型相...

weixin_34059951的博客 366
上一篇: 《算法之美》---次序选择问题
下一篇: 《ASCE1885的武术》---扭打八绝
ACE1985
博客等级 码龄17年 1307粉丝 308原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值