UML--用例图详解

UML图详解(二)用例图 一、概念 用例图(Use Case Diagram):主要用于描述系统的行为及各种功能之间的关系,是描述参与者(Actor)与用例以及用例与用例之间关系的图。 用例图 = 参与者 + 用例 + 关系 二、用途 用例图显示谁将是相关的用户、用户希望系统提供什么服务以及用户需要为系统提供的服务。 用例图最常用来描述系统以及子系统。   通俗的来说:用例图与具体实现并不关联,从用户和外部系统的... 阅读详情
AI摘要

本文深入解析用例图的构成元素,如参与者、用例、系统边界及元素间关系,阐述用例图在需求分析中的作用,包括其在描述系统功能、促进团队沟通方面的价值。同时,文章探讨了用例图的粒度、用例规约等内容,以及用例间的包含、扩展、泛化关系。

用例图的含义

由参与者(Actor)、用例(Use Case) 以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图。
其中用例和参与者之间的对应关系又叫做通讯关联(Communication Association)。

用例图的作用

用例图是需求分析中的产物,主要作用是描述参与者与和用例之间的关系,帮助开发人员可视化地了解系统的功能。借助于用例图,系统用户、系统分析人员、系统设计人员、领域专家能够以可视化的方式对问题进行探讨,减少了大量交流上的障碍,便于对问题达成共识。

用例图的构成元素

用例图的构成元素又四个:参与者(角色)、用例、系统边界、元素之间的关系

  • 参与者(Actor)——与应用程序或系统进行交互的用户、组织或外部系统。用一个小人表示。
    在这里插入图片描述

  • 用例(Use Case)——用例就是外部可见的系统功能,对系统提供的服务进行描述。用椭圆表示。
    在这里插入图片描述

  • 系统边界——系统边界是指系统与系统之间的界限。用方形框+系统名称表示。
    在这里插入图片描述- 元素之间的关系
    用例图中的关系有四种:关联、泛化、包含、扩展

关系类型说明表示符号
关联参与者与用例之间的关系在这里插入图片描述
泛化参与者之间或用例之间的关系在这里插入图片描述
包含用例之间的关系在这里插入图片描述
扩展用例之间的关系在这里插入图片描述
参与者

参与者(Actor)是指存在于系统外部并直接与系统交互的人、系统、子系统或类的外部实体的抽象。每个参与者可以参与一个或多个用例,每个用例也可以有一个或多个参与者。

参与者间的关系

由于参与者实质上也是类,所以它拥有与类相同的关系描述,即参与者与参与者之间主要是泛化关系(或称为“继承”关系)。
泛化关系是指把某些参与者的共同行为提取出来表示成通用行为,并描述成超类。泛化关系表示的是参与者之间的一般或特殊关系,在UML图中,使用带空心三角箭头的实现表示泛化关系,箭头指向超类参与者。
在这里插入图片描述

系统边界

系统边界是指系统与系统之间的界限。通常所说的系统可以认为是由一系列相互作用的元素形成的具有特定功能的有机整体。系统同时又是相对的,一个系统本身又可以是另一个更大系统的组成部分,因此,系统与系统之间需要使用系统边界进行区分。
系统边界在用例图中用方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。

用例

用例(Use Case)是参与者(角色)可以感受到的系统服务或功能单元。它定义了系统是如何被参与者使用的,描述了参与者为使用系统所提供的某一完整功能而与系统之间发生的一段对话。
用例最大的优点就是站在用户的角度上(从系统的外部)来描述系统的功能。它把系统当作一个黑箱子,并不关心系统内部是如何完成它所提供的功能的,表达了整个系统对外部用户可见的行为。

用例的特征:

  • 用例必须由某一个参与者触发激活后才能执行,即每个用例至少应该涉及一个参与者。如果存在没有参与者的用例,则可以考虑将这个用例并入其他用例之中。
  • 用例表明的也是一个类,而不是某个具体的实例。用例所描述的是它代表的功能的各个方面,包含了用例执行期间可能发生的各种情况。
  • 用例是一个完整的描述。

用例的粒度:
用例的粒度是指用例所包含的系统服务或功能单元的多少。用例的粒度越大,用例包含的功能越多,反之则包含的越少。

粗粒度细粒度
在这里插入图片描述在这里插入图片描述

用例规约:
用例图只是在总体上大致描述了系统所提供的各种服务,让人们对系统有一个总体的认识。但对于每一个用例,还需要详细地描述信息,以便让别人对于整个系统由更加详细的了解,这些信息包含在**用例规约(Use Case Specification)**中。

  1. 简要说明(Brief Description)
    简要说明是指对用例作用和目的的简要描述。
  2. 事件流(Flow Event)
    事件流包括基本流和备选流。基本流描述的是用例的基本流程,是指用例“正常”运行时的场景。备选流描述的时用例执行过程中可能发生的异常和偶尔发生的情况。
  3. 用例场景(Use-Case Scenario)
    同一个用例在实际执行的时候会有很多不同的情况发生,称之为用例场景,也可以说用例场景就是用例的实例,用例场景包括成功用例场景和失败场景。
  4. 特殊需求(Sepcial Requirement)
    特殊需求是指一个用例的非功能性需求和设计约束。特殊需求通常时非功能性需求,包括可靠性、性能、可用性和可扩展性等。
  5. 前置条件(Pre-Condition)
    前置条件是指执行用例之间系统必须所处的状态。例如,前置条件是要求用户有访问的权限,或是要求某个用例必须已经执行完。
  6. 后置条件(Post-Condition)
    后置条件是指用例执行完毕后系统可能处于的一组状态。例如,要求在某个用例执行完后,必须执行另一个用例。

用例之间的重要关系

1. 包含

包含关系指用例可以简单地包含其他用例具有的行为,并把它所包含的用例行为作为自身行为的一部分。
在UML中,包含关系是通过带箭头的虚线段 + << include >>字样来表示的,箭头由基础用例(Base)指向被包含的用例(Inclusion)。
包含关系
主要由以下两种情况需要用到包含关系:

  1. 多个用例用到同一段的行为,则可以把这段共同的行为单独抽象成一个用例,然后让其他用例来包含这一用例。
  2. 当某一个用例的功能过多、事件流过于复杂时,也可以把某一段事件流抽象成一个被包含的哟管理,以达到简化描述的目的。
    在这里插入图片描述
    添加和修改会员信息后需要预览会员信息,用以检查添加和修改操作是否正确完成。

包含关系的两个优点:

  1. 提高了用例模型的可维护性,当需要对公共需求进行修改时,只需要修改一个用例而不必修改所有与其有关的用例。
  2. 不但可以避免在多个用例中重复的描述同一段行为,还可以避免在多个用例中对同一段行为描述不一致的现象。

2. 扩展

在一定条件下,把新的行为加入到已有的用例中,获得的新用例叫做扩展用例(Extension)。原有的用例叫做基础用例(Base),从扩展用例到基础用例的关系就是扩展关系。
一个基础用例可以拥有一个或者多个扩展用例,这些扩展用例可以一起使用。需要注意的时:在扩展关系中是基础用例而不是扩展用例被当做例子使用。
在UML图中,扩展关系是通过带箭头的虚线段 + << extend >> 字样来表示的,箭头指向基础用例。
扩展关系
扩展关系与包含关系的不同点如下:

  • 在扩展关系中,基础用例提供了一个或者多个插入点,扩展用例为这些插入点提供了需要插入的行为。而在包含关系中,插入点只能有一个。
  • 在扩展关系中,基础用例的执行并不一定会涉及到扩展用例,扩展用例只有在满足一定条件下才会被执行。而在包含关系中,当基础用例执行完后,被包含用例是一定会被执行的。
  • 即使没有扩展用例,扩展关系中的基础用例本身也是完整的。而对于包含关系,基础用例在没有没有被包含用例的情况下就是不完整的存在。

在这里插入图片描述基础用例是“身份验证”,扩展用例是”修改密码“。在一般情况下,只需要执行”身份验证“用例即可。但是如果登录用户想要修改密码,这时就不能执行用例的常规动作。如果取修改”身份验证“用例,势必增加系统的复杂性,这时就可以在基础用例”身份验证“中增加插入点,这样用户向修改密码时,就执行扩展用例”修改密码“。

3. 泛化

用例的泛化是指一个父用例可以被特化成多个子用例,而父用例和子用例之间的关系就是泛化关系。
在用例的泛化关系中,子用例继承了父用例所有的结果、行为和关系,子用例是父用例的一种特殊形式。此外,子用例还可以添加、覆盖、改变继承的行为。
在UML中,用例的泛化关系是通过一个三角箭头从子用例指向父用例来表示的。
在这里插入图片描述

泛化关系的使用场景:
当系统中有两个或者多个用例存在行为、结构和目的方面存在共性时,就可以使用泛化关系。这时,可以用一个新的(通常也是抽象的)用例来描述这些共有部分,这个新的用例就是父用例。

在这里插入图片描述
银行有两种存款方式,一种时柜台存款,一种时ATM存款。在上图中,银行柜台存款和ATM存款都是存款的一种特殊方式,因此“存款”为父用例,“银行柜台存款”和“ATM存款”为子用例。

泛化关系和包含关系的区别:

  • 在用例的泛化关系中,所有的子用例都有相似的目的和结构,注意它们是整体上的相似。而用例的包含关系中,基础用例在目的上可以完全不同,但是它们都有一段相似的行为,它们的相似是部分的相似不是整体的相似。
  • 用例的泛化关系类似于面向对象中的继承,它把多个子用例中的共性抽象成一个父用例,子用例在继承父用例的基础上可以进行修改。但是子用例和子用例之间又是相互独立的,任何一个子用例的执行都不受其他子用例的影响。而用例的包含关系是把多个基础用例中的共性抽象为一个被包含用例,可以说被包含用例就是基础用例中的一部分,基础用例的执行必然引起被包含用例的执行。

用例图实例

  • 销售员用例图
    在这里插入图片描述

  • 仓库管理员用例图
    在这里插入图片描述

  • 采购员用例图
    在这里插入图片描述

  • 会计用例图
    在这里插入图片描述

  • 系统管理元用例图
    在这里插入图片描述

【软件工程与UML】第2章 用例图、用例文档、活动图 -- 系统的功能需求建模 目录01.用例图用例图的4组成(一)参与者(二)用例(三)关系表达关系的符号泛化关系(四)系统其他02.用例文档简化的用例文档注意事项03.活动图主要组件建模活动图步骤01.用例图 用例图的4组成 ①参与者(Actor)、用例(Use Case)、关系、系统 (一)参与者 参与者是系统外部的一个实体,它以某种方式参与用例的执行过程 参与者可以是人,也可以是事物,也可以是时间、气压、温度等环境因... 阅读详情

相关推荐

用例图详解

用例图主要用来描述客户的需求,包含参与者,用例,边界,关系。 用例之间用关联来连接以求把系统的整个结构和功能反映给非技术人员(通常是软件的用户)。用例是从系统外部可见的行为,从原则上来讲,用例之间都是独立、并列的,它们之间并不存在着包含从属关系。但是为了体现一些用例之间的业务关系,提高可维护性和一致性,用例之间可以抽象出包含(include)、扩展(extend)和泛(generalization)几种关系。 1 包含 基用例可以依赖包含用例执行的结果,但是双方都不能访问对方的属性。has a .

wangbuji的博客 1万+

到底什么是用例图!!!!

用例图到底是个什么图? 用例图由哪些元素构成? 用例图中的用例之间有什么关系? 如何创建一个用例图? 用例图到底是个什么图? 一个图,由参与者(系统用户)、用例(系统功能)、以及他们之间的关系构成的,用于描述系统功能的动态试图。 如果要在用例图上显示一个参与者,可以绘制一个人形符号。 如果要在用例图上显示某个用例,我们需要画一个椭圆,然后将用例的名称放在椭圆的中心或者椭圆下面的中心位置。 参与者和用例之间的关系使用带箭头或者不带箭头的线段来描述,箭头表示的是:这一关系中哪一方是对话的主动发起者,箭头.

小鹏AI 3万+

一文搞懂用例图:软件世界的“导航地图”

  用例图作为软件开发中不可或缺的工具,为我们搭建了一座从用户需求到系统实现的桥梁 。它通过清晰地展示参与者、用例以及它们之间的关系,让我们能够全面、深入地理解系统的功能需求 。从确定系统的边界,到获取精准的需求,再到指导测试和其他开发工作流,用例图贯穿于软件开发的各个阶段,发挥着不可替代的作用 。同时,理解用例之间的包含、扩展和泛化关系,能够帮助我们更细致地梳理系统功能的层次结构和变化逻辑,使系统设计更加合理、高效 。

大雨淅淅的博客 3146

用例图介绍

 用例图 用例图(Use Case Diagram)是由软件需求分析到最终实现的第一步,它描述人们如何使用一个系统。用例视图显示谁是相关的用户、用户希望系统提供什么样的服务,以及用户需要为系统提供的服务,以便使系统的用户更容易理解这些元素的用途,也便于软件开发人员最终实现这些元素。用例图在各种开发活动中被广泛的应用,但是它最常用来描述系统及子系统。当用例视图在外部用户出现以前出现时

GAME-LAB(游戏开发,微信公众号:fury-programer) 1万+

UML用例图实例详解与实战

在UML用例图中,参与者(Actor)是指与系统进行交互的实体,它可以是人、外部系统、硬件设备或其他软件系统。参与者的本质在于它与系统之间的交互行为,这些行为通常表现为对系统功能的请求或响应。参与者并不直接描述系统内部的结构或功能,而是关注于系统与外部世界的接口。通过识别参与者,我们可以更好地理解系统的服务对象及其交互方式。例如,在一个银行系统中,客户、银行柜员、ATM机、外部支付系统等都可以作为参与者。参与者在用例图中以小人图标。

weixin_42601134的博客 3334

使用TinyProxy搭建代理服务器

背景 办公电脑所在网络无法连接外网,机房服务器可以连接外网,通过服务器代理上网; 一、CentOS下TinyProxy安装–搭建代理服务器 TinyProxy是个轻量级简单的HTTP/HTTPS代理程序,GitHub和官网,安装方式这里主要介绍两种 CentOS下yum安装,参考:TinyProxy安装 Docker安装 先安装docker环境yum install docker -y 二、Win10下使用 ...

椰汁菠萝 1万+

【UML建模】用例图(Use Case Diagram)

用例图(Use Case Diagram)是UML建模中最重要并且最常用的一种图形,它有着足够良好的抽象,用几组简单的图形就能够描述出应用程序的功能需求,以及应用程序与用户或者与其他应用程序之间的交互关系。因此,用例图常常会在跨部门、跨岗位的合作中出现,作为演示和说明文档的基石,简单的说就是在一个项目中,产品、研发、测试、运维等岗位角色都能看懂并了解业务大致是如何展开的。

积木成林,聚沙成塔 1万+

用ST25DV芯片+KiCad快速设计NFC标签天线:参数计算/脚本生成/实测优化全流程

本文详细介绍了使用ST25DV芯片和KiCad工具设计NFC标签天线的全流程,包括参数计算、脚本生成和实测优化。通过解析芯片等效工作原理和设计思路,帮助开发者避开常见陷阱,实现高效、可量产的天线设计。文章还提供了Python计算工具和KiCad自动化脚本,大幅提升设计效率和成功率。

jj890的博客 758

UML 用例图

UML 用例图 参考 【UML】— 用例图 用例图 初学UML——用例图 需求中如何画用例图 为什么使用用例图 从业务事件、发起事件以及系统如何响应这些事件来建模系统功能的过程。 用例建模起源于面向对象建模。 概念 图形化地描述了谁将使用该系统以及用户希望与系统交互的方式。 业务事件的文本描述以及用户如何与系统交互以完成任务。 参与者 参与者是与系统...

一只小羊 6820

VS Code+ESP-IDF开发避坑指南:头文件标红报错的5种解决方法(附CMakeLists.txt配置)

本文详细解析了在VS Code中使用ESP-IDF开发ESP32时头文件标红报错的5种解决方法,包括环境配置检查、CMakeLists.txt规范配置、路径解析策略、缓存清理技巧和高级调试手段。特别提供了CMakeLists.txt的实战配置示例,帮助开发者彻底解决头文件路径问题,提升开发效率。

weixin_33670786的博客 560

ADS1231驱动开发:24位高精度ADC嵌入式实现指南

24位Δ-Σ型ADC是高精度传感器信号采集的核心器件,其原理基于过采样与数字滤波实现远超奈奎斯特极限的分辨率。技术价值在于以低成本硬件达成微伏级信号分辨能力,显著提升称重、压力、力等桥式传感器系统的动态范围与温漂稳定性。典型应用场景涵盖电子秤、工业变送器及材料测试设备等对线性度、零点漂移和抗工频干扰(50/60Hz)有严苛要求的领域。本文围绕ADS1231这一面向惠斯通电桥优化的专用ADC,深入解析其串行同步时序驱动、PGA增益配置、参考电压匹配及FreeRTOS多任务安全集成等关键工程实践。

weixin_34268462的博客 625

UML——用例图(Use case diagrams)

目录 什么是用例图? 用例图帮我们做什么? 用例图的基本元素有哪些? 什么是用例图? 定义:用来描述用户的需求,从用户的角度来描述系统的功能,并给出各功能的执行者,强调谁在使用系统,系统为执行者完成哪些功能。是系统的蓝图 用例图帮我们做什么? 回答两个问题:是谁用软件、软件的功能有哪些 是9种图的关键,也是第一个需要画的图。比方说现在要建一座大厦,设计师先根据客户的要求设计出大厦,设计完成之后工程师才知道要建个什么样的东西出来。设计师的设计在UML...

一起加油吧~ 5848

大模型抽取知识图谱三元组的可行性分析

通过结合传统信息抽取模型与大语言模型的混合架构,可高效完成从学术文献到知识图谱三元组的全流程构建。分阶段优化:传统模型负责粗粒度抽取,大模型负责细粒度修正。灵活提示设计:通过少样本学习引导大模型理解领域本体。严格质量控制:结合规则引擎和人工校验,确保三元组准确性。该方案可显著提升知识图谱构建效率,适用于学术研究、企业知识库等场景。

qq_20647053的博客 1067

uml(unified modeling language)用例图、类图、序列图详解

uml(unified modeling language)全称为统一建模语言,在软件开发领域经常被用到,uml是对

贝伦酱 3466

YF-S401水流量传感器在STM32上的精准计量实现

本文详细介绍了YF-S401水流量传感器与STM32微控制器的集成应用,实现精准水流计量。通过外部中断和外部时钟两种脉冲计数方案,结合硬件配置、软件滤波和校准技巧,确保高精度流量测量。适用于智能家居和工业自动化中的水控系统,提升系统稳定性和测量准确性。

rainy的博客 897

基于 高斯过程回归(Gaussian Process Regression, GPR) 的 时间序列区间预测 的 MATLAB 示例代码

基于 高斯过程回归(Gaussian Process Regression, GPR) 的 时间序列区间预测 的 MATLAB 示例代码

算法如诗的博客 154

详解UML(统一建模语言)中的类图、用例图、活动图、状态图、顺序图

nifiedodelinganguage)UML是非专利的第三代建模和规约语言 是用于说明 可视化 构建和编写一个正在开发的 面向对象的 软件密集系统的制品的开放方法UML展现了一系列最佳工程实践 这些最佳实践在对大规模 复杂系统进行建模方面 特别是在软件架构层次已经被验证有效。

很多时候犯错都是在不知情的情况下发生的 1万+

STM32 BOOTLOADER配置以及APP跳转实现(裸机)

Bootloader是硬件启动的引导程序,是运行操作系统的前提。在操作系统内核或用户应用程序运行之前运行的一段小代码。对硬件进行相应的初始化和设定,最终为操作系统准备好环境。APP就是我们的应用程序,经过硬件引导程序之后跳转到系统程序运行。

吻等离子的博客 3356

UML用例图详解

1. 概述   用例图(Use Case Diagram)描述“用户、需求、系统功能单元”之间的关系,是参与者所能观察和使用到的系统功能模型图。   用例图用于需求分析阶段   用例图包含6个基本元素:参与者(Actor)、用例(Use Case)、泛化关系(Generalization)、扩展关系(Extend)、包含关系(Include)和关联关系(Association)。 2、用例...

于大博 3091

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

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

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

[软件工程] UML 用例图详解

参考博客:参考教材:软件工程(第四版)高等教育出版社统一建模语言(Unified Modeling Language,UML) 可分类成:·功能模型:从用户的角度展示系统的功能,包括用例图。·对象模型:采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类别图、对象图。·动态模型:展现系统的内部行为。包括序列图,活动图,状态图。

qq_51533157的博客 1万+

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

UML建模图文详解教程02——用例图

用例图(use case diagram)是表示一个系统中用例与参与者之间关系的图。它描述了系统中相关的用户和系统对不同用户提供的功能和服务。用例图是 UML 中对系统的动态方面建模的五种图之一(其他四种是活动图、状态机图、顺序图和通信图),它是对系统、子系统和类的行为进行建模的核心。

谷哥的小弟 1万+

UML——用例图详解

定义:根据用户提出的需求描述系统的行为及各种功能之间的关系。 个人理解:用例图是从用户角度描述系统功能,通过用例图可以知道一个系统能够做什么,它要实现什么功能。用例图用于开发人员与用户之间的交流,以便开发人员很好的理解用户需求。 用例图的基本组成元素: 【组成】:用例图=参与者+用例+关系 参与者:参与者是用例的启动者,参与者可能是人或其他外界系统。 用例:一系列可完成系统功能的

胡根得 天行健,君子以自强不息。 6941
上一篇: Oracle--PL/SQL游标(光标)详解
下一篇: Oracle--PL/SQL例外详解
吴声子夜歌
博客等级 码龄9年 2688粉丝 2271原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值