【时间盒子】-【9.任务设置项】自定义任务名称、任务时长等设置项组件

Tips:

@Stage、@Link装饰器的使用;

参考我的帖子:https://developer.huawei.com/consumer/cn/forum/topic/0208152234389094513?fid=0101587866109860105

一、预览

  1. 红色框:任务设置项列表,把它定义为一个组件对象SettingList。
  2. 绿色框:任务设置项,这里有两个设置项,分别是任务名称和任务时长,后续可能有更多的设置项。所以把这些设置项抽象为一个类对象TaskSettingItem,这个对象类有名称(任务名称)、内容(早起跑步)和类型。
  3. 设置项类型:定义一个枚举类型对象TaskSettingType,代表不同的设置项;通过这个类型判断,当点击不同类型的设置项,弹出不同的对话框(见下一篇)。

二、枚举类型TaskSettingType.ets

右击目录constants >> 新建 >> ArkTS File,文件命名为TaskSettingType。

定义两个枚举常量,分别是0表示任务名称TASK_NAME;1表示任务时长TASK_DURATION。代码如下:

/**
 * 任务设置类型
 */
export enum TaskSettingType {
  /**
   * 任务名称
   */
  TASK_NAME = 0,
  /**
   * 任务时长
   */
  TASK_DURATION = 1

}

三、任务设置项TaskSettingItem.ets

右击目录viewmodel >> 新建 >> ArkTS File,文件命名为TaskSettingItem。

给设置项定义三个属性,分别是项的名称、内容和类型。代码如下:

import { TaskSettingType } from '../constants/TaskSettingType';
/**
 * 任务设置项实体对象
 */
export default class TaskSettingItem {
  /**
   * 设置项的标题
   */
  public title: string;

  /**
   * 设置项的值内容
   */
  public content: string;

  /**
   * 设置项的类型
   */
  public sType: TaskSettingType;

  /**
   * 构造函数
   * @param title 设置项的标题
   * @param content 设置项的值内容
   * @param type 设置项的类型
   */
  constructor(title: string, content: string, type: TaskSettingType) {
    this.title = title;
    this.content = content;
    this.sType = type;
  }
}

四、任务设置项列表组件SettingList.ets

右击目录component >> 新建 >> ArkTS File,文件命名为SettingList。

 

  1. 设置项列表使用Column列上下布局,包含多个设置项,设置项与设置项之间有分割线隔开。
  2. 每个设置项使用Row行左右布局,包含设置项的名称、内容和右箭头图片。

给该组件定义一个任务设置项数组对象settingItems: Array<TaskSettingItem>,通过遍历数组对象的元素,动态生成任务设置项。代码如下:

import SizeUtil from '../utils/SizeUtil'
import TaskSettingItem from '../viewmodel/TaskSettingItem'


@Component
export default struct SettingList {
  @Link settingItems: Array<TaskSettingItem>;

  build() {
    Column() {
      ForEach(this.settingItems, (item: TaskSettingItem, index: number | undefined) => {
        // 分割线,第一个不显示
        Divider()
          .visibility(index === 0 ? Visibility.Hidden : Visibility.Visible)
          .opacity($r('app.float.divider_opacity'))
          .color($r('app.color.grey_divider'))
          .lineCap(LineCapStyle.Round)
          .margin({
            left: SizeUtil.getVp($r('app.float.setting_item_divider_margin_horizon')),
            right: SizeUtil.getVp($r('app.float.setting_item_divider_margin_horizon'))
          })

        Row() {
          Text(item.title)
            .fontSize(SizeUtil.getVp($r('app.float.setting_item_name_font_size')))
            .fontWeight(FontWeight.Regular)
            .fontColor($r('app.color.grey_divider'))
            .layoutWeight(1)
          Text(item.content == '' ? '请输入' : item.content)
            .fontSize(SizeUtil.getVp($r('app.float.setting_item_content_font_size')))
            .fontWeight(FontWeight.Normal)
            .fontColor($r('app.color.grey_divider'))
            .opacity($r('app.float.setting_item_content_font_opacity'))
          Image($r('app.media.icon_right'))
            .width(SizeUtil.getVp($r('app.float.setting_item_image_width')))
            .height(SizeUtil.getVp($r('app.float.setting_item_image_height')))
            .objectFit(ImageFit.Fill)
            .margin({
              left: SizeUtil.getVp($r('app.float.setting_item_image_margin_horizon'))
            })
        }
        .height(SizeUtil.getVp($r('app.float.setting_item_height')))
        .alignItems(VerticalAlign.Center)
        .padding({
          left: SizeUtil.getVp($r('app.float.setting_item_interval')),
          right: SizeUtil.getVp($r('app.float.setting_item_interval'))
        })
        .onClick(() => {
          // 弹窗设置
          // TODO:
        })

      }, (item: TaskSettingItem, index: number | undefined) => JSON.stringify(item) + index)
    }
    .margin({
      bottom: SizeUtil.getVp($r('app.float.setting_item_interval')),
      left: SizeUtil.getVp($r('app.float.setting_item_interval')),
      right: SizeUtil.getVp($r('app.float.setting_item_interval'))
    })
    .borderRadius(SizeUtil.getVp($r('app.float.setting_item_border_radius')))
    .backgroundColor(Color.White)
  }

}

五、float.json

在资源文件float中新定义的数值,代码如下:

{
  "name": "divider_opacity",
  "value": "0.05"
},
{
  "name": "setting_item_divider_margin_horizon",
  "value": "12"
},
{
  "name": "setting_item_name_font_size",
  "value": "16"
},
{
  "name": "setting_item_content_font_size",
  "value": "14"
},
{
  "name": "setting_item_content_font_opacity",
  "value": "0.6"
},
{
  "name": "setting_item_image_width",
  "value": "6.7"
},
{
  "name": "setting_item_image_height",
  "value": "12.8"
},
{
  "name": "setting_item_image_margin_horizon",
  "value": "7"
},
{
  "name": "setting_item_height",
  "value": "56"
},
{
  "name": "setting_item_interval",
  "value": "12"
},
{
  "name": "setting_item_border_radius",
  "value": "24"
}

六、资源文件

在资源文件media目录下添加设置项右侧的箭头图片文件(见附件)

 

 

 

CodeX设计师工作流:全链路创意操作系统实战指南 CodeX并非传统AI绘图工具,而是一种面向设计领域的全链路创意操作系统,其核心在于任务编排引擎与多模态执行能力。它通过感知层(上下文化信息捕获)、决策层(结构化需求拆解)和执行层(本地化交付)三层协同,将模糊创意指令转化为可验证、可部署的工程化输出。技术价值体现在大幅压缩认知劳动、统一跨平台资产、沉淀项目知识图谱,显著提升设计师在B端SaaS、新能源汽车、在线教育等高复杂度场景中的策略响应力与交付确定性。本文聚焦CodeX如何重构设计师工作流,覆盖灵感生成、文案协同、Figma组件自动化、跨平台同步等真实 阅读详情

相关推荐

基于RFID与Arduino的智能淋浴计时系统:从硬件搭建到云端可视化

物联网(IoT)技术通过传感器、微控制器和网络连接,实现了物理世界与数字世界的无缝对接。其核心原理在于利用嵌入式系统采集环境或设备数据,并通过网络协议传输至云端平台进行处理与分析。这项技术的价值在于能够以低成本、自动化的方式解决日常生活中的具体问题,例如资源监控与行为分析。在智能家居和节能管理领域,通过结合身份识别与状态检测,可以实现对特定场景(如家庭用水)的精细化追踪。本文以淋浴时间分析为例,详细介绍了如何运用RFID进行用户身份识别,并利用Arduino作为主控单元,结合门磁开关等传感器构建一个完整的感

weixin_34238633的博客 357

TypeScript学习笔记

好处之二是可以捕获引用了不存在的属性时的错误。

吴小花的博客 552

大模型选型实战:从业务场景出发的适配决策树

大模型不是通用智能体,而是需与具体任务精准咬合的工程工具。理解其核心能力维度——任务粒度适配度、数据环境鲁棒性、资源-效果平衡曲线,是规避榜单幻觉、实现真实落地的前提。尤其在制造业缺陷识别、金融多源推理、医疗阴性描述理解等强约束场景中,模型价值取决于对行业‘不可替代性锚点’的覆盖能力,而非参数规模或C-Eval分数。本文聚焦可复用的四步决策法:定义最小可行任务(MVT)、绘制能力缺口地图、构建低成本验证沙盒、签署能力承诺书,帮助业务方跳过概念炒作,直击AI落地本质。

cuiji1279的博客 327

ts中枚举类型(enum)简单使用

枚举只是在 TypeScript 中组织代码的一种有用方式。以下是枚举派上用场的一些原因:

u011200562的博客 8186

媒体播控与信息发布系统:从核心原理到实战部署全解析

媒体播控与信息发布系统是现代企业实现远程、集中化屏幕内容管理的核心技术。其原理基于客户端-服务器架构,通过中心服务器统一管理内容编排与发布计划,终端设备通过网络定时拉取指令与资源,并依赖本地解码与渲染实现稳定播放。该技术的核心价值在于实现了内容分发的精准管控与高效运维,解决了传统分散式播放的混乱与低效问题。在应用场景上,它广泛应用于零售门店、企业展厅、政务公开及交通导引等需要大规模、多终端信息同步发布的领域。本文将以**SaaS服务**和**安卓播放盒**这两种主流方案为例,深入剖析从系统选型、网络配置到日

cneo2012的博客 328

静态vs动态贝叶斯网络:如何为时序预测选对建模范式

贝叶斯网络是实现可解释AI推理的核心概率图模型,其本质是用有向无环图(DAG)刻画变量间的条件独立性与因果关系。静态贝叶斯网络(SBN)适用于瞬时状态诊断,如信贷风险评估或设备健康快照;而动态贝叶斯网络(DBN)通过时间切片与跨切片转移机制,专精于多步时序预测,如故障趋势推演与ICU病情演化分析。二者的技术价值不在优劣之分,而在是否匹配问题的时间敏感性、状态记忆性与数据可观测性。典型应用场景涵盖工业预测性维护、医疗监护预警与金融风控决策支持——当业务目标从‘现在怎样’转向‘接下来会怎样’,DBN便成为不可替

weixin_34025051的博客 452

孩子的专注力并非天生固定,而是受环境、习惯、生理状态等多因素影响的 “可培养能力”

培养孩子专注力需"保护+提高"双管齐下。保护专注力要避免5大误区:频繁打断、环境过度刺激、违背年龄特点、任务难度不当及过度使用电子产品。提高专注力可通过4个科学方法:任务拆解降低难度、感官专注游戏训练、赋予自主选择权以及保证规律作息。家长需遵循3个黄金原则:尊重个体差异、正向引导、以身作则。专注力培养是循序渐进的过程,核心在于创造无压力的环境,让孩子自然发展注意力控制能力。

金牌学霸 1015

基于Arduino与ThingSpeak的RFID淋浴计时物联网系统设计与实现

物联网(IoT)系统通过传感器、微控制器和网络通信技术,实现对物理世界的感知、数据采集与远程监控。其核心原理在于将物理信号转化为数字数据,并通过网络协议传输至云端平台进行处理与可视化。这种技术架构在智能家居、环境监测和能耗管理等领域具有重要价值,能够实现数据的量化分析与远程管理。本文聚焦于一个典型的物联网应用场景——家庭用水习惯追踪,通过整合RFID身份识别、Arduino主控和ThingSpeak云平台,构建了一套完整的淋浴时间自动记录与分析系统。该系统利用MFRC522模块进行用户身份验证,通过ESP8

weixin_34268310的博客 374

中兴如何远程服务器时间同步,IPTV系统时钟同步功能配置方法——中兴

《IPTV系统时钟同步功能配置方法——中兴》由会员分享,可在线阅读,更多相关《IPTV系统时钟同步功能配置方法——中兴(8页珍藏版)》请在人人文库网上搜索。1、IPTV系统时钟同步功能配置方法一、范围此文档用于指导测试人员配置IPTV系统各部分的时钟同步功能。主要介绍了此项功能的需求、解决方案以及具体的配置方法。二、功能需求1、系统日志功能需要准确的时间来记录系统行为和辅助定位系统故障。2、用户消...

weixin_39613188的博客 2513

【信息科学与工程学】计算机科学与自动化——第六十三篇 人机交互之前端交互参数知识库01

此方案可满足千万级并发需求,同时支持时序数据、知识图谱和文档数据库的高效处理,通过云原生架构实现极致弹性。​:每月约$15-20万(100节点K8s集群+数据库集群+CDN流量)1. 宠物上架/下架流程。

weixin_49199313的博客 1476

【时间盒子】-【13.任务新建】创建一个新任务

Watch、@Provide:对状态变量的监听。请参考我的帖子:https://developer.huawei.com/consumer/cn/forum/topic/0208152234389094513?router:页面路由。

与辉鸿蒙 922

Python+AI玩转批量自动化任务

基础学会Python基础,结合Ollama本地模型编写代码,实现短视频素材、设计文件全自动批量处理,替代人工重复工作,大幅提升创作效率

qq_32381773的博客 379

【训练】Qwen2.5VL 多机多卡 Grounding Box定位

之前的相关文章:【深度学习】LLaMA-Factory微调sft Qwen2-VL进行印章识别使用LLaMA-Factory微调sft Qwen2-VL-7B-Instruct构建最新的LLaMA-Factory镜像。

q742971636的博客 2583

Cocos基础概念知识

【架构透视与数据流向图解】Cocos Creator 3.x 引入了高度可定制的现代渲染管线(Render Pipeline),支持跨平台的高性能图形渲染。其工作原理可以抽象为一个从“逻辑数据”到“屏幕像素”的数据流转换过程。【工作原理数据流图】场景图 (Scene Graph)➔渲染收集 (RenderFlow)➔渲染队列 (RenderQueue)➔渲染管线 (RenderPipeline)➔图形 API (WebGL/Vulkan)1. 场景漫游与数据收集(RenderFlow)

qq_52269550的博客 562

Anaconda安装教程傻瓜教程

网上好多教程找的我心好累,为了方便新手安装,我这边整理了大致详细的教程,参考了好几个大佬的教程,废话不多说,直接开始~ **前言:**有人纠结先安装python还是安装anaconda,这边的建议是装anaconda,就不需要单独装python了。 其次,有小伙伴的Anaconda的安装分两种情况: 情况一:电脑现在没有装python或者现在装的可以卸载掉(装Anaconda时先卸python); 情况二:电脑目前装了python,但想保留它;

zlc2351951436的博客 5万+

STM32F103电压采集proteus仿真

基于HAL库,仿真单片机型号为stm32f103R6,代码keil5。通过单片机的ADC采集功能,测量四路电压,数据经由DMA传输,并将结果通过串口输出,结果比较确,误差在0.01V左右。目前仿真采集四路比较稳定,多了会乱码。proteus版本8.11安装包链接:https://pan.baidu.com/s/1yhNKLl1lGSU9KU0tTuAxcg?pwd=dxe8提取码:dxe8项目下载地址:.

weixin_42490599的博客 4766

零基础DOCKER学习

一、什么是docker Docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术实现高效的文件操作(类似虚拟机的磁盘比如分配500g实则不占用磁盘的500g) 1、namespaces名称空间 运行空间的隔离,分为六项 UTS:主机名和域名隔离 IPC:信号量、消息队列和共享内存隔离 PID:进程编号隔离 NETWORK:网络设备、网络栈、端口等隔离 MOUNT:挂载点(文件系统)隔离 USER:用户和用户组隔离(3.8以后的内核

xiaowaixi的博客 479

Keras中神经网络可视化模块keras.utils.visualize_util安装配置方法

Keras中神经网络可视化模块keras.utils.visualize_util安装配置方法

jacke121的专栏 2759

超越成功率:机器人行为多维评测工具包构建与实践指南

在机器人学与具身智能领域,传统的任务成功率指标如同仅看考试分数,无法全面评估机器人的真实能力。为了深入理解机器人如何执行任务,需要引入多维度的行为质量评估体系。其核心原理在于将任务执行过程分解为一系列可量化的技术指标,例如运动平滑度、路径效率和物体操作精度等,从而实现对机器人行为的“全身检查”。这种评估方法的技术价值在于能够为模型优化提供明确的指导方向,而不仅仅是给出一个二进制的成功与否判断。在应用场景上,它广泛适用于基于仿真环境(如PyBullet、ManiSkill2)的机器人策略开发、强化学习算法评估

weixin_34115824的博客 416

AI大模型探索之路-应用篇11:AI大模型应用智能评估(Ragas)

随着人工智能技术的飞速发展,AI大模型(LLM)已经成为了推动技术创新和应用的关键因素。这些大模型在语言理解、图像识别、自然语言生成等领域展现出了惊人的能力。然而,随着模型规模的增大,它们对计算资源的消耗、环境适应性、模型稳定性、安全性和可解释性等方面也提出了新的挑战。因此,对AI大模型进行智能评估变得至关重要,以确保它们在实际应用中的稳定性、可靠性和有效性。本文将详细介绍Ragas框架,一个专为AI大模型设计的智能评估工具。

寻道AI,探索AI无限可能! 5541

基于MATLAB的导弹轨迹和撞击位置仿真

本文将介绍如何使用MATLAB进行导弹轨迹和撞击位置的仿真,提高导弹的精确打击能力。首先,我们需要确定导弹的初始位置和速度,以及导弹所受到的外部环境因素如重力、空气阻力等。在MATLAB中,可以通过ODE求解器来模拟导弹的运动轨迹。最后,我们通过控制器输出的控制信号来控制导弹的姿态。通过对导弹的运动轨迹和姿态进行仿真,可以更好地预测和规划导弹的运动轨迹,提高其精确打击能力。在实际作战中,为了提高导弹精确打击能力,需要对导弹的撞击位置进行预测和规划。我们可以通过控制导弹的姿态来实现撞击目标的精确命中。

CyberLynxO的博客 1982

破冰游戏设计 —— 鸿蒙AI智能助手开发全流程解析

本文详细解析了基于鸿蒙生态的破冰游戏设计AI应用开发全流程,采用"对齐→架构→原子化→审批→自动化→评估"六阶段方法论。项目针对社交沟通场景,通过ArkTS+ArkUI技术栈实现结构化输入引导与多维度方案输出。核心内容包括:需求分析与边界确认(明确输入参数与JSON输出格式)、三层架构设计(视图层+业务层+数据层)、原子化任务分解(8个可独立验证的开发任务)。应用具备离线Mock数据支持,预留AI接口扩展能力,严格遵守鸿蒙NEXT开发规范,实现加载快、交互简、结果准的社交破冰方案生成工具。(149字)

xd185578555的博客 227

使用Qt编译Qt WebEngine

这就是使用Qt编译Qt WebEngine模块的基本步骤。通过按照上述步骤,您应该能够成功编译和使用Qt WebEngine来嵌入Web内容到您的Qt应用程序中。Qt WebEngine是Qt框架的一个模块,它提供了一个现代的Web浏览器引擎,可以在Qt应用程序中嵌入Web内容。首先,需要获取Qt的源代码。如果尚未安装,可以从Qt官方网站下载并安装Qt。完成Qt的安装后,您可以构建并运行Qt WebEngine示例来验证编译是否成功。这将把编译好的Qt库文件和头文件安装到之前指定的安装目录中。

DevForge的博客 3016

Arduino蜂鸣器音乐编程:从PWM原理到乐谱转换实战

在嵌入式开发中,PWM(脉冲宽度调制)是一种通过数字信号模拟模拟量的基础技术,其核心原理是通过调节方波的占空比来控制输出能量。这一技术不仅用于电机调速和LED调光,更在音频生成领域发挥关键作用——通过精确控制方波频率,可以驱动无源蜂鸣器产生特定音高的声波。从技术价值看,PWM音频方案实现了硬件资源的最小化占用,为物联网设备、智能玩具等场景提供了低成本的声音反馈能力。在应用层面,开发者常需将音乐旋律转换为机器可执行的时序指令,这涉及乐谱到频率-时长序列的映射逻辑。本文聚焦Arduino平台,通过Simple

weixin_33709364的博客 459

9篇1章1节:中国居民健康与营养调查(CHNS)数据库的官网解析和数据下载(2026年版)

在探讨中国社会经济转型与人口健康变迁的学术领域中,中国健康与营养调查(CHNS) 是一个无法绕过的权威数据库。本文将带你深入了解CHNS的项目背景、庞大的数据体系,以及如何通过这两个核心网站获取关键的家庭、个人及社区层面的研究数据。

MD Code 1694

深度学习工具包 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&#39;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(&#39;DeepLearnToolbox&#39;));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(&#39;state&#39;,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&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,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 = &#39;sigm&#39;;%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, &#39;Too big error&#39;);```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(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;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)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;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, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% 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&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 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, &#39;Too big error&#39;);```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(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % 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, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);%% 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(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 【时间盒子】-【8.时间选择器】自定义上下午、时分选择器组件
下一篇: 【时间盒子】-【10.自定义弹窗】CustomDialogController
鸿花粉
博客等级 码龄20年 321粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸿花粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值