基于UniApp的智能在线客服系统前端设计与实现

uniapp联系在线客服功能,H5和APP都能使用 开发App的时候遇到一个在线客服的功能,虽然自己也写出了在线联系的功能,但是最后还是使用了第三方插件,因为代码少。而且省事,个人使用的是“网易七鱼”。 1、注册“网易七鱼”账号,复制以下代码替换下方html中的红色部分代码 1、新建一个html文件,路径放在static静态目录下,和图片放在一起 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ... 阅读详情

了解更多,搜索“程序员老狼”

一、引言

在当今数字化时代,客户服务已成为企业竞争力的重要组成部分。本文将详细介绍一款基于UniApp框架开发的跨平台智能客服系统前端实现方案,该系统不仅具备传统客服功能,还融入了现代即时通讯和人工智能技术,为用户提供高效、便捷的服务体验。

二、系统概述

该客服系统前端采用UniApp框架开发,实现了"一次开发,多端发布"的目标,可同时运行于iOS、Android、Web及各种小程序平台。系统主要面向客服人员使用,提供了完整的客户沟通、信息管理、快捷回复等功能模块。

三、核心功能实现

1. 实时通讯模块

系统采用WebSocket技术实现实时双向通讯,确保消息的即时收发。通过心跳机制保持长连接,处理各种网络异常情况:

// WebSocket初始化与消息处理
initSocket(){
  if (app.globalData.socketObj) {
    if (!app.globalData.socketObj.isConnect) {
      app.globalData.socketObj.initSocket()
    }
  } else {
    app.globalData.socketObj = new WebSocketClass(
      this.wsBaseUrl + "?token=" + this.token,
      60 // 心跳间隔
    )
    app.globalData.socketObj.initSocket()
  }
}

消息类型包括文本、表情、图片、文件、音频等多种形式,通过特殊标记实现富文本展示:

// 富文本内容解析
replaceContent(content) {
  // 处理表情[face]、图片[img]、音频[audio]、文件[file]等特殊标记
  content = content.replace(/face\[([^\s\[\]]+?)\]/g, function(face) {
    return '<img class="faceiconImg" src="'+faceUrl+'">';
  })
  .replace(/img\[([^\s\[\]]+?)\]/g, function(img) {
    return '<img class="chatImagePic" src="'+imgUrl+'"/>';
  })
  // 其他类型处理...
  return content;
}

2. 访客信息管理

系统提供全面的访客信息展示与管理功能,包括基础信息、访问记录、标签管理等:

// 获取访客信息
getVisitor() {
  uni.request({
    url: this.baseUrl + '/kefu/visitor?visitorId='+this.visitor_id,
    success: (res) => {
      this.visitor_name = res.data.result.name;
      this.visitor_ip = res.data.result.client_ip;
      // 组织访客额外信息展示
      this.visitorExtra.push({key:'IP地址',val:res.data.result.client_ip});
      this.visitorExtra.push({key:'城市',val:res.data.result.city});
      // 其他信息处理...
    }
  });
}

3. 快捷回复系统

为提高客服效率,系统内置了快捷回复功能,支持分组管理和快速搜索:

<uni-collapse accordion>
  <uni-collapse-item :title="reply.group_name" v-for="reply in ent_replys">
    <view class="replyBox" v-for="replyItem in reply.items" 
          @click="messageContent=replyItem.item_content">
      <view class="replyTitle">{{replyItem.item_name}}</view>
      <view class="replyContent">
        <mp-html :content="replaceContent(replyItem.item_content)"/>
      </view>
    </view>
  </uni-collapse-item>
</uni-collapse>

4. 多语言翻译功能

系统集成了实时翻译功能,支持50+种语言的互译,极大提升了跨语言沟通效率:

// 翻译功能实现
translate(content, msg_id) {
  uni.request({
    url: this.baseUrl + '/kefu/translate',
    data: {
      words: content,
      from: "auto",
      to: this.visitorLang,
      msg_id: msg_id
    },
    success: (res) => {
      // 更新消息翻译内容
      this.messages.forEach(msg => {
        if(msg.msg_id == msg_id) {
          msg.translated_content = res.data.result.dst;
        }
      });
    }
  });
}

四、特色功能实现

1. 实时音视频通讯

系统采用WebRTC技术实现点对点音视频通话,提供高质量的实时沟通体验:

// 音视频通话初始化
initPeerjs(visitorId) {
  const peer = new Peer();
  peer.on('open', (id) => {
    // 发送通话请求
    uni.request({
      url: this.baseUrl + '/kefu/callVisitor',
      method: 'POST',
      data: {
        peer_id: id,
        visitor_id: visitorId,
        action: "accept"
      }
    });
  });
  
  peer.on('call', (call) => {
    // 处理来电
    uni.showModal({
      title: '请选择语音/视频接待',
      success: (res) => {
        if(res.confirm) {
          this.startUserMedia(visitorId, true); // 视频通话
        } else {
          this.startUserMedia(visitorId, false); // 语音通话
        }
      }
    })
  });
}

2. 智能机器人辅助

系统内置智能机器人功能,可根据场景自动切换人工/机器人服务模式:

// 机器人状态切换
switchRobotStatus(e) {
  const value = e.detail.value ? "1" : "2"; // 1启用 2禁用
  uni.request({
    url: this.baseUrl + '/kefu/visitorState',
    method: 'POST',
    data: {
      state: this.visitor.state,
      value: value,
      visitor_id: this.visitor_id
    },
    success: () => {
      uni.showToast({ title: "状态切换成功" });
    }
  });
}

3. 消息撤回与状态跟踪

系统提供消息撤回功能和阅读状态跟踪,确保沟通的准确性和可控性:

// 消息撤回
longDelete(msgId) {
  uni.showModal({
    title: '撤回操作',
    content: '请问要撤回本条消息吗?',
    success: (res) => {
      if (res.confirm) {
        uni.request({
          url: this.baseUrl + '/kefu/message_delete',
          method: 'POST',
          data: { msg_id: msgId, visitor_id: this.visitor_id },
          success: () => {
            // 从消息列表中移除
            this.messages = this.messages.filter(msg => msg.msg_id != msgId);
          }
        });
      }
    }
  });
}

五、用户体验优化

1. 界面交互设计

系统采用简洁直观的聊天界面布局,优化了消息加载、滚动定位等细节:

// 消息滚动定位
pageScrollToBottom(isFast) {
  this.$nextTick(() => {
    uni.pageScrollTo({
      scrollTop: 99999999999999999,
      duration: isFast ? 1 : 300,
    })
  });
}

2. 多端适配策略

利用UniApp的跨平台特性,针对不同平台进行差异化处理:

<!-- 平台条件编译 -->
<!-- #ifdef H5 -->
<mumu-recorder ref='recorder' @success='handlerRecordSuccess'></mumu-recorder>
<!-- #endif -->

3. 性能优化措施

  • 消息分页加载,避免一次性加载大量数据
  • 本地缓存常用数据,减少网络请求
  • 图片懒加载和自适应缩放
  • WebSocket连接复用和自动重连

六、技术难点与解决方案

1. 跨平台兼容性问题

​​问题​​:不同平台对WebRTC、录音等功能的支持度不同。

​​解决方案​​:

  • 使用条件编译处理平台差异
  • 引入第三方插件填补功能缺口
  • 设计降级方案保证基础功能可用

2. 实时通讯稳定性

​​问题​​:弱网环境下消息丢失、延迟问题。

​​解决方案​​:

  • 实现消息重传机制
  • 本地消息缓存和状态标记
  • 断线自动重连和消息同步

3. 富文本内容安全

​​问题​​:用户输入的富文本可能存在XSS攻击风险。

​​解决方案​​:

  • 使用mp-html组件进行安全渲染
  • 服务端和客户端双重内容过滤
  • 限制可执行的HTML标签和属性

uniapp 之 接入小程序客服 因老大 看到别人家有在线客服这个功能,就让我也做一个,这个功能很简单效果图1。 阅读详情

相关推荐

uniapp接入微信客服聊天流程(企业微信)

多平台开发企业微信客服是最好的解决方案。接下来就是繁琐的调试调试。接入流程和小程序类似,直接上代码。里面有步骤,按照步骤走即可(uniapp接入客服到此结束。客服连接有用复制一下,然后。如果多平台开发可以都接入。

qq_45142260的博客 1万+

H5/APP客服端源码/uniapp在线客服系统源码开源了,全源码代码解读及发行安装教程...

前言 目前,即时通讯在线咨询在网站、APP、小程序中已经是不可获取的功能,尤其是专注于线上营销的商家,迫切需要一套可以随时与访客交流的即时通讯工具。 如果使用市面上的SaaS客服系统,会在功能上受限制,需要开通高级VIP,才能更好的使用,所以这些商家迫切需要可以私有化独立部署的客服系统,来满足自己的运营要求。 为了能够随时随地与访客进行沟通,客服需要能在手机端及时收到消息,随时回复消息,所以可以...

程序员老狼专注开发aigc或客服系统应用 3687

2024 在线客服系统网页聊天源码多商户客服坐席即时沟通(thinkPHP8.0+uniapp)

2024 在线客服系统网页聊天源码多商户客服坐席即时沟通(thinkPHP8.0+uniapp)其强大的总后台支持无限开设商户功能,而且功能全面升级,系统后台能够详细展示访客的来源(包括IP和地址)及其当前状态,让您对每一位访客了如指掌。同时,我们提供灵活的访客管理功能,如访客拉黑、常用语快捷编辑与添加,让您的服务更加个性化和高效。 此系统还支持访客与客服的精细分组管理,让您能够更精准地分配服务资源。通过后台自定义机器人学习,实现智能回复。系统还支持自定义访客评价及推送,方便您及时了解用户反馈。

yuanmashoucang的博客 957

计算机毕业设计 SSM+Vue电商扶贫平台 电商购物平台 三农扶贫商城 电商商品采集平台 Java Vue MySQL数据库 远程调试 代码讲解

计算机毕业设计 SSM+Vue电商扶贫平台 电商购物平台 三农扶贫商城 电商商品采集平台

BYSJLG的博客 755

宝塔面板+Workerman实战:手把手教你为FastAdmin后台和UniApp用户端搭建WebSocket实时通信

本文详细介绍了如何利用宝塔面板和Workerman为FastAdmin后台与UniApp用户端搭建高效的WebSocket实时通信系统。从环境配置、服务端优化到客户端健壮性设计,提供了一套完整的解决方案,帮助开发者快速实现实时消息推送、在线客服等功能,显著提升应用交互体验。

weixin_30752699的博客 240

uni-app小程序集成企业微信联系我插件:提升客服转化率30%的实战指南

在移动应用开发中,提升用户转化与留存是核心目标之一,尤其是在需要即时沟通的客服与销售场景。传统方案如静态联系方式往往因操作繁琐导致用户流失。企业微信官方提供的「联系我」插件,通过其底层原理,实现了在小程序内一键唤起企业微信会话的能力,将用户沟通路径从多步操作简化为一步直达。这一技术方案的核心价值在于,它不仅优化了用户体验,更通过将咨询流量统一沉淀至企业微信后台,显著提升了客服管理效率与数据追踪能力。对于基于uni-app的跨端开发项目,该插件的集成涉及小程序插件机制、条件编译以及多端降级策略等关键技术点。在

weixin_34268169的博客 472

基于免费开源后台 BuildAdmin+TP8+VUE3+PHP8+uniapp 的最新技术栈在线客服系统!

一款基于BuildAdmin和Workerman开发的在线客服系统,具有多客服支持、知识库、实时邀请会话等功能。系统支持跨站调用,提供丰富的消息类型和访客信息管理。安装需开放2828端口并启动Workerman服务,支持Windows和Linux/Mac环境。外站调用只需引入JS代码即可集成客服功能,同时提供了uni-app客户端示例工程。常见问题解答包括全局引入配置和Nuxt工程适配说明,为开发者提供了完整的部署和使用指南。

weixin_48453209的博客 509

ai在线客服 多语言客服系统源码 免验证

设置目录 public 伪静态 thinkphp 数据库在根目录自己导入然后修改数据库自己的 经测试完美搭建成功缺点 回复不能马上显示需刷新 懂技术的自行修改

旅游业AI在线客服系统+DeepSeek,解放客服人员双手

它能够根据用户输入的内容精准匹配相关信息,提供更加个性化的服务体验。例如,用户输入一个旅游目的地,它不仅能推荐景点和交通路线,还能分析用户的偏好,自动优化行程建议。它不仅解放了人工客服双手,还能提供高效、智能、精准的服务,助力旅游企业提升整体运营效率,并在竞争激烈的市场中脱颖而出。传统的人工客服虽然能够提供个性化的服务,但在高峰时段,往往难以应对大量的咨询需求。借助AI在线客服系统和DeepSeek的强大能力,人工客服人员不再需要处理重复、基础的咨询问题,而能集中精力应对更为复杂和个性化的客户需求。

wap0812的博客 283

uniapp APP端客服插件

这是一个uniapp APP端客服插件,里面有详细使用方法,可以放心使用。

XDS110 USB Debug Probe连接错误-260:CCS Theia环境下的诊断与修复指南

本文详细解析了CCS Theia环境下XDS110 USB Debug Probe连接错误-260的诊断与修复方法。从硬件连接到驱动状态、固件更新到软件配置,提供了全面的排查指南,帮助开发者快速解决这一常见的调试器通信障碍问题,确保嵌入式开发工作流畅进行。

hope8的博客 285

Uniapp集成七鱼智能客服实战指南:从接入到避坑

按照上面的步骤,从申请账号到代码集成,顺利的话半小时内确实能让客服功能跑起来。七鱼SDK的封装程度很高,大部分复杂逻辑都被隐藏了,对Uniapp开发者非常友好。“如何实现客服会话上下文的精准保持?比如,用户昨天咨询了订单A的问题,今天又来咨询订单B,客服如何快速看到昨天的聊天记录?或者用户从商品页跳转客服,客服如何立刻知道用户在看哪个商品?这涉及到更复杂的消息队列和用户行为轨迹的传递。七鱼的后台功能其实支持这些,需要开发者仔细阅读文档,在初始化userInfo和启动会话的。

2600_94960137的博客 241

编写用户帮助/操作手册指南

一个新系统,需要写用户操作手册,该从何下笔?本篇是一篇教你编写用户帮助/操作手册的指南~

pytester的博客 3万+

Uniapp集成智能客服功能实战:从选型到性能优化的完整指南

使用Vue 3的Composition API可以更清晰地组织消息气泡的逻辑。<template>-- 文本消息 -->-- 图片消息 --><image/>-- 其他消息类型... --></view></view>// 假设的时间格式化工具message: {},},});// 使用计算属性格式化时间});// 图片预览功能current: 0});</script>.avatar {/* ... 更多样式 */

2600_94960058的博客 246

CCS软件仿真插件移植避坑指南:从CCS5.5到7.4的完整流程

本文详细介绍了将CCS软件仿真插件从CCS5.5迁移至CCS7.4的完整流程与避坑指南。针对TMS320F28335等C2000系列芯片,重点解析了仿真核心文件、配置数据库、连接定义及驱动文件的移植步骤,并通过两个实战Demo验证了移植后仿真环境的可用性,帮助开发者在无硬件条件下继续高效进行算法验证与调试。

defi6farmer的博客 461

FreeSwitch采用mrcp协议对接科大讯飞asr和tts以及对话系统

FreeSwitch采用mrcp协议对接科大讯飞asr和tts对接过程

shanghaimoon的专栏 8843

微信小程序 uniapp+vue农产品商城在线客服python

对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。在线客服系统通常分为前端(微信小程序)和后端(Python)两部分,核心功能包括即时通讯、消息管理、用户管理和数据统计。需要成品或者定制,如果本展示有不满意之处。数据库工具:Navicat/SQLyog/ MySQL Workbench等都可以。该方案提供了完整的农产品商城在线客服系统实现路径,可根据实际需求进行裁剪或扩展。查看详细的视频演示,或者了解其他版本的信息。

QQ188083800的博客 294

避坑指南:企业微信IP白名单设置失败的5种常见原因及解决方案

本文深入解析企业微信API调用中IP白名单设置失败的5种常见原因,包括动态公网IP变更、代理服务器导致的IP失真等,并提供针对性的解决方案。特别针对可信IP配置问题,详细介绍了诊断方法和Java代码示例,帮助企业开发者快速解决访问限制问题,确保API调用安全稳定。

weixin_29280657的博客 621

小程序毕业设计基于微信小程序的商城系统0c5eb675

一、系统背景与意义随着移动互联网的快速发展和智能手机的广泛普及,人们的购物方式发生了巨大变化。小程序作为一种轻量级、无需下载安装的应用形式,备受用户青睐。同时,电商市场竞争激烈,商家需要不断拓展销售渠道,提升用户体验,以获取更多的市场份额。基于Spring Boot开发微信小程序商城系统,可以充分利用其强大的功能和灵活性,满足不同用户群体的需求,为商家和用户带来诸多好处,推动电商行业的发展。二、系统架构与技术选型1.后端架构:2.

m0_50936939的博客 755

LLC电路细讲笔记(二)LLC谐振转换器:频率、增益与Q值的详细探讨

这本电子书通过详细分析LLC谐振转换器的工作原理、等效电路和增益公式,帮助读者深入理解如何设计和优化谐振转换器系统。通过这些公式和设计方法,工程师可以根据不同的应用需求调整参数,实现高效的电能转换。

weixin_43199439的博客 6904

Qt Installer Framework 简单使用

qt installer framework 简单使用

qq_42815643的博客 2576

如何快速构建跨平台即时通讯系统:MobileIMSDK终极指南 [特殊字符]

MobileIMSDK是一套历经10年考验的原创全平台IM通信层框架,它可能是市面上唯一同时支持UDP+TCP+WebSocket三种协议的开源即时通讯解决方案。这款超轻量级、高度提炼的框架支持iOS、Android、Java、H5、小程序、Uniapp、鸿蒙Next等多种平台,服务端基于Netty构建,为企业级聊天系统开发提供了强大而灵活的解决方案。 ## 📱 为什么选择MobileIMSD

gitblog_00972的博客 432

高级电机控制场景实例:基于Simulink的永磁同步电机基于Luenberger观测器的弱磁控制仿真

本文基于Simulink实现表贴式永磁同步电机(SPMSM)的Luenberger观测器弱磁控制仿真,通过构建“观测-弱磁-控制”协同逻辑,突破传统矢量控制的基速限制。利用线性化模型设计观测器实时估计电流与磁链,结合电压极限约束动态注入负d轴电流,实现转速扩展至12000rpm(4倍基速),弱磁区电流THD低于3%,动态响应时间小于5ms,验证了高速运行下系统稳定性与鲁棒性。附完整建模步骤、MATLAB函数代码及性能分析,适用于电动汽车、机床等高速驱动场景,为高级电机控制提供可复现的技术范式。

amy_mhd的博客 32

在线客服——各第三方的收费标准及服务提供

腾讯企点——云客服:https://qidian.qq.com/module/service.html 1、2000元一个坐席,3个起购 2、智能机器人另买,3800元/年,5万条回复 3、全渠道接入:QQ,公众号/小程序,网页会话,h5,电话。 4、包括:图片、音视频、文件传输、屏幕共享、电话等丰富的形式与客户互动 5、客服可以通过统一工作台的界面接待来自各渠道的客户,利用快捷回复响应客户,可对...

BetterGG的博客 6037

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

使用Node.js+Socket.IO搭建WebSocket实时应用

http://www.open-open.com/lib/view/open1402479198587.html Web领域的实时推送技术,也被称作Realtime技术。这种技术要达到的目的是让用户不需要刷新浏览器就可以获得实时更新。它有着广泛的应用场景,比如在线聊天室、在线客服系统、评论系统、WebIM等。 WebSocket简介 谈到Web实时推送,就不得不说

mengzhengjie的专栏 547

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

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

uniapp APP使用微信客服(超详细,保姆级教学)

APP使用微信客服

weixin_44303631的博客 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")

上一篇: 开发手记:一个支持自动翻译的H5客服系统
下一篇: 我用UniApp打造了一款轻量级在线客服助手
adminwolf
博客等级 码龄2年 124粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值