【Websocket】实现聊天室上传照片

框架级多种策略实现接口限流【阅读MallChat频控模块源代码】 通过自定义注解的方式结合多种策略实现框架的接口限流功能 阅读详情

1、ChatServer

@Slf4j
@ServerEndpoint("/websocket")
@Component
public class ChatServer {
    @OnOpen
    public void onOpen(){
        log.info("---------------------------->on Open");
    }

    @OnClose
    public void OnClose(){
        log.info("---------------------------->on Close");
    }

    @OnMessage
    @SneakyThrows
    public void onMessage(String message, Session session){
        log.info("------------------->message:{}",message);
        for (Session se:session.getOpenSessions()){
            //把消息转发到其他用户
            se.getBasicRemote().sendText(message);
        }
    }
}

2、启动类的修改

因为我们图片采用base64发送,因此内容肯定会很长,有的小的图片可以发(比如1-2k这种)

但大的就不行。于是就顺着websocket发送内容太长了如何解决的问题
即加入配置 在原来的启动类中实现ServletContextInitializer接口并设置发送内容大小限制。

@SpringBootApplication
public class XiyuemallChatApplication implements ServletContextInitializer {

    public static void main(String[] args) {
        SpringApplication.run(XiyuemallChatApplication.class, args);
    }
    //添加websocket支持
    @Bean
    public ServerEndpointExporter serverEndpointExporter(){

        return new ServerEndpointExporter();
    }

    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
     servletContext.setInitParameter("org.apache.tomcat.websocket.textBufferSize","1024000");
    }
}

前端页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>websocket测试</title>
</head>
<body>
<input type="text" id="text"><button onclick="sendText()">发送</button>
<input type="file" id="f" onchange="chooseFile()">
<div id="main">
</div>

<script type="text/javascript">
    var ws = new WebSocket('ws://localhost:8989/websocket');
    ws.onopen = function (ev) {
        console.log("------连接服务器成功-----")
    }

    ws.onerror=function (ev) {
        console.log("------连接服务器出错-----")
    }

    //监听 接收消息
    ws.onmessage=function (ev) {
        //解析json
        var json = JSON.parse(ev.data);
        //1为文本消息
        if(json.code==1){
            document.querySelector("#main").innerHTML="<p>"+json.msg+"</p>"+document.querySelector("#main").innerHTML;
            //2为图片消息
        }else if(json.code==2){
            document.querySelector("#main").innerHTML='<img width="150px" src='+json.msg+'>'+document.querySelector("#main").innerHTML;
        }
    }

    //发送文本消息
    function sendText() {
        var msg = document.querySelector("#text").value
        if(msg){
            //websocket发送文本消息
            ws.send(JSON.stringify({code:1,msg:msg}));
            document.querySelector("#text").value=""
        }
    }

    //发送图片消息
    function chooseFile() {
        var files = document.querySelector("#f").files
        if(files.length>0){
            var fileReader = new FileReader();
            fileReader.readAsDataURL(files[0])
            fileReader.onload=function (e) {
                var s = JSON.stringify({code:2,msg:e.target.result});
                //websocket发送图片消息
                ws.send(s)
            }
        }
    }
</script>
</body>
</html>

使用webSocket实现移动端与PC端传输图片 需求:我需要把移动端的一个base64图片传到PC端后,由PC端上传第三方接口,得到第三方接口返回的一个合成文件。 下面是我历经千辛万苦后得到的流程结果,我会按照下面如图顺序介绍每一个步骤 我好苦呀 下面开始介绍: 一.获取base64 这里实际是获取电子签名的base64,总之就是拿到一个base64 二.转文件流上传图片 里面的上传图片实际是调用接口,fd已经是可直接上传的formD... 阅读详情

相关推荐

Matrix+Synapse保姆级部署:构建端到端加密去中心化聊天室

Matrix是一种开放、去中心化的实时通信协议,其核心价值在于端到端加密(E2EE)与联邦架构——消息全程密文传输,密钥由客户端自主管理,服务器无法解密;用户身份基于`@user:domain.com`格式,可跨服务器互通。Synapse作为官方参考实现,提供高可靠、强一致的协议落地能力,广泛用于私有加密聊天室、企业安全协作等场景。本文聚焦VPS环境下的生产级部署,涵盖PostgreSQL事务优化、Redis缓存策略、Nginx WebSocket代理及TLS终止等关键配置,帮助开发者从零构建可控、可审计、

431

websocket实现群发图片

流程: (群发图片) 1.前台获取并连接websocket服务器,上传图片,将流、图片流通过websocket发送至服务器。 2.后台搭建websocket服务器,以及消息处理服务,将接收到的图片流转发给所有在线客户端。 3.客户端收到服务器转发的图片流,动态添加img标签,将图片在页面上展示。 效果: 1.未发图片时图片列表为空 2.发送图片,在线的客户端都会收到图片消息。 实现过程: 1.前台代码: (1)html代码 <!--发送图片按钮--> <form name="f

EatingSoilLang 5147

uniapp(全端兼容) - 最新详细实现 “在线多端“ 实时聊天通讯功能,电商客服消息聊天列表实时接收发送消息,支持检测对方是否已读/未读、从相册发送图片、录制视频发送、发送本机文件、历史消息等等!

uni-app,在线聊天,安卓app,苹果app,微信小程序,移动端,H5网页,手机网站,微信小程序、支付宝小程序,手机app端,nvue,多端聊天,uni-app聊天页面发表情 发文件 发图片,微信小程序聊天发表情,IM聊天,即时通讯,超详细教程示例源码,IM聊天教程:发送图片/视频/语音/表情,聊天室,vue,仿微信聊天,钉钉聊天,消息列表,淘宝京东拼多多,客服聊天列表及聊天页面,已读,未读,发视频,发文件,IM聊天,实现app聊天页面功能,好用的聊天插件,组件,聊天列表(类似微信的消息列表)、历史聊天

✅ 精选推荐文章 1万+

【免费下载】 抹茶商城聊天系统(MallChat)安装与配置指南

--- ### 项目基础介绍及主要编程语言 **抹茶商城聊天系统** 是一个集购物与即时通讯于一体的电商平台项目,严格遵循互联网企业级开发规范。它不仅提供了全面的电商业务功能,如购物车、订单处理、支付、商品推荐、搜索引擎优化、用户增长策略、活动促进、消息推送、物流追踪、客户服务,而且还包含了即时聊天功能,提升了用户体验。此项目采用 **Java** 作为主要编程语言,确保了系统的稳定性和扩展性...

gitblog_07904的博客 1807

SpringBoot+Vue宠物健康咨询系统:从架构设计到核心代码实现

在Web应用开发领域,前后端分离架构已成为主流实践,它通过清晰的职责划分提升了开发效率和系统可维护性。其核心原理在于前端负责视图与交互,后端专注业务逻辑与数据接口,二者通过RESTful API进行通信。这种模式的技术价值在于支持团队并行开发、技术栈灵活选型以及更好的用户体验。在诸如在线医疗、电商平台、内容管理等应用场景中,该架构能有效支撑复杂的业务模块与交互需求。本文以宠物健康咨询系统为例,深入剖析如何运用SpringBoot和Vue.js技术栈,实现用户管理、在线问诊、实时通信等核心功能,并重点探讨了基

weixin_33919950的博客 348

SpringBoot+Vue校园竞赛管理系统设计与开发实战

前后端分离架构已成为现代Web应用开发的主流模式,其核心思想是将界面展示与业务逻辑解耦,通过RESTful API进行交互。Spring Boot作为Java生态下高效的后端开发框架,凭借自动配置和内置容器大幅简化服务端构建;Vue作为渐进式前端框架,以组件化和响应式数据绑定提升页面开发效率。两者结合可快速搭建企业级管理系统,广泛适用于信息管理、流程审批、数据展示等场景。本文以校园竞赛管理系统为例,深入讲解基于SpringBoot+Vue的完整开发流程,涵盖JWT权限认证、数据库设计、文件上传、前后端联调等

weixin_30616969的博客 585

纯netty实现http,websocket协议,头像上传,搭建实时聊天室,群聊,私聊,文字,图片消息

纯netty实现http,websocket协议,搭建实时聊天室,群聊,私聊  最新在看netty,对netty比较感兴趣的一个是nio性能,一个是websocket,作为练习,我用netty实现http,协议和websocket协议,构建实时聊天室。http协议主要用来接收请求,返回页面,websocket实现浏览器端和netty服务器连接。 演示地址: http://www.xinxi...

springcloud 2667

电商即时聊天系统_MallChat_抹茶_1741163171.zip

电商即时聊天系统_MallChat_抹茶_1741163171.zip

基于WebSocket实现的JJ聊天室

​JJ 聊天是一款仿微信实时聊天系统,提供实时聊天、搜索好友和群、新建群聊、添加好友、解散群聊、 踢出群聊、邀请好友进群、点赞、 评论、回复评论、写说说等功能

书生-w的博客 6359

mallchat的后端项目,是一个既能购物又能聊天的电商系统 以互联网企业级开发规范的要求来实现它

mallchat的后端项目,是一个既能购物又能聊天的电商系统。以互联网企业级开发规范的要求来实现它,电商该有的购物车,订单,支付,推荐,搜索,拉新,促活,推送,物流,客服,它都有

手把手教你用Wireshark抓包分析BLE广播包:从PDU结构到AD Type实战解析

本文详细介绍了如何使用Wireshark工具抓取并分析BLE广播包,从PDU结构到AD Type的实战解析。通过硬件设备选择、软件配置、协议栈解析及高级故障排查,帮助开发者深入理解蓝牙低功耗通信机制,提升物联网设备调试效率。

weixin_30482383的博客 417

微信小程序聊天室实战:WebSocket稳定连接与图片上传全解析

实时通信是移动应用中最常见的交互形态,而WebSocket作为服务端主动推送消息的核心协议,凭借低延迟与长连接优势,成为聊天室、消息推送等场景的首选技术方案。在实际工程中,实时消息的稳定传输不仅依赖协议本身,还需要完善的心跳机制、断线重连与消息去重策略来保障弱网环境下的可靠性。当聊天场景需要发送图片时,文件上传链路的设计尤为关键,直接通过WebSocket传输base64数据会严重拖垮通道性能,业界普遍采用“文件与消息分离”的架构,先将图片上传至对象存储,再通过WebSocket传递文件URL。这种模式既能

weixin_31155097的博客 186

ESP32驱动MLX90640红外热成像传感器:从报错到成功运行的完整避坑指南

本文是一份详细的ESP32驱动MLX90640红外热成像传感器的实战指南。针对开发中常见的I2C通信失败、数据全零及‘坏点过多’等报错,文章提供了从环境搭建、驱动库选择与改造到实战代码解析的完整解决方案,并分享了数据滤波、热图生成及多任务优化等高级技巧,帮助开发者高效避坑,实现稳定运行。

weixin_29191669的博客 94

实时照片墙系统设计与实践:从上传链路到大屏播放的完整方案

在活动互动场景中,实时照片墙并非简单的图片展示工具,而是一套需要同时服务观众、主持人与后台运维的实时系统。其核心难点在于如何应对弱网环境下的图片上传、海量并发请求、图片格式兼容性以及大屏端稳定播放等工程挑战。通过合理运用对象存储直传、图片处理网关(如HEIC统一转码、EXIF方向纠正)、WebSocket长连接与播放队列机制,可以有效实现从拍摄到上墙的低时延体验。同时,结合内容审核与人工调度,既能保证画面质量,又能控制活动节奏。这种设计思路广泛适用于企业年会、品牌发布会、展会等场景,为高并发实时互动提供了一

weixin_42535703的博客 319

python画弗里德曼(Friedman) 检验和秩和检验(Nemenyi)检验图

python画弗里德曼(Friedman) 检验和秩和检验(Nemenyi)检验图 画好后效果图 实现代码如下 import matplotlib.pyplot as plt #算法平均排名 _alg_=[1.405,2.643,2.786,2.167] y=[1,2,3,4]#alg1,alg2,alg3,alg4 通过Nemenyi测试计算得到的临界值CD CD=1.024 h_CD=CD/2 plt.figure(figsize=(10,6)) plt.scatter(_alg_,y,s=10

大模型天花板 4464

203.华为组网实例:VLAN间互通DHCP中继实验

SW核心交换机上配置DHCP中继。

迷逝 8432

vue项目前端知识点整理

微信授权后还能通过浏览器返回键回到授权页 在导航守卫中可以在next({})中设置replace: true来重定向到改路由,跟router.replace()相同 router.beforeEach((to, from, next) => { if (getToken()) { ... } else { // 储存进来的地址,供授权后跳回 ...

dbazuu7620的博客 473

【DL经典回顾】距离度量大汇总(7-余弦距离(Cosine Distance))

余弦距离(Cosine Distance)衡量的是两个向量在方向上的差异性,而不是在大小上的差异。

悦学共鸣,温柔以待,汇聚光芒,共同成长 2579

Django+Nginx+uwsgi网站Channels+redis+daphne多人在线聊天实现粘贴上传图片

在Django+Nginx+uwsgi网站Channels+redis+daphne多人在线的基础上(详见),实现在输入框粘贴或打开本地图片,上传到网站后返回图片路径,以链接的形式将图片插入到输入框显示,并实现异步发送消息。

weixin_44274609的博客 770

DSP篇--C6678功能调试系列之SPI调试

SPI传输数据分为线上直接收发和通过EDMA的数据传输两种。第一种是直接将数据放在线上(SPIDAT1),在寄存器(SPIBUF)中写入命令实现数据的收发;第二种需要配置EDMA,将数据buffer直接作为EDMA的数据源进行传输,其需要配置的参数和中断与EDMA一致。

nanke_yh的博客 1259

168、OIS光学防抖系统设计:陀螺仪标定、音圈马达驱动与滚珠式/悬丝式结构选型

本文总结了OIS光学防抖系统设计中的关键问题与解决方案。作者通过实际案例指出,陀螺仪标定需重视零偏、灵敏度和温度补偿问题,音圈马达驱动需采用电流环控制并优化相位补偿。在机械结构选型方面,滚珠式适合大角度补偿但存在回差问题,悬丝式精度高但受重力影响,需根据应用场景选择。系统联调建议从开环到闭环逐步验证,注意陀螺仪与驱动频率匹配。最后给出5条经验建议:关注陀螺仪信噪比而非分辨率、预留标定余量、重视机械结构公差、配备专业调试工具、协调OIS与电子防抖的分工配合。文章强调OIS调试需针对不同模组特性进行反复测试与标

zzfmlxs的博客 46

Node.js+Vue3实战:校园博客与笔记分享平台全栈开发指南

在校园知识管理场景中,前后端分离架构已成为主流实践。Node.js凭借异步I/O和事件驱动模型,在高并发长连接场景下表现出色;Vue3的组合式API则让多人协作开发更清晰高效。两者结合,既能快速搭建内容平台,又能通过WebSocket实现实时互动。本文从真实校园博客与笔记分享项目出发,涵盖用户认证、内容发布、标签检索、聊天室等功能,并分享数据库设计、Socket.IO集成以及Nginx部署中的关键细节与踩坑经验,为同类型全栈项目提供可复用的工程参考。

weixin_30522983的博客 85

jdbc从入门到精通(全)

前言 Java语言连接数据库(Java DataBase Connectivity) 面向接口/抽象编程(降低程序的耦合度,提高程序的扩展力)类似多态机制

码农研究僧的博客 1758

JAVA助力台球室:无人自助,开台约球社交新体验

摘要:基于Java技术构建的智能台球室系统采用SpringCloud微服务架构实现无人自助运营,核心功能包括扫码开台、智能计费、约球社交和设备管理。系统创新性地引入AI水平评估和大数据分析,提供个性化训练推荐和虚拟教练服务。商业价值显著,可降低60%人力成本,提升50%球桌周转率,并通过会员体系和数据变现创造新盈利模式。技术实现上采用MySQL+Redis+MongoDB多数据库架构,结合WebSocket和MQTT实现实时通信,支持每秒万级并发请求,系统响应时间控制在10ms以内。

小马总的博客 883

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SpringBoot+Vue相亲网站管理系统:全栈毕设项目设计与实现详解

在高校毕业设计与课程设计中,前后端分离架构已成为Java全栈项目的常见范式。SpringBoot作为后端框架,以自动配置和生态整合能力降低接口开发成本;Vue凭借组件化与双向绑定提升页面交互效率;MySQL则承担核心业务数据的建模与存储。三者组合形成的管理平台,常用于社交类系统的快速落地,如相亲网站、二手交易、校园交友等场景。文章围绕一个典型的相亲网站管理平台,从角色流程、数据表结构、核心匹配逻辑到部署排错,完整拆解了毕设级别项目的实现路径。适合正在选题或需要快速跑通全栈项目的开发者参考。

weixin_33507732的博客 208

Statistics and Machine Learning Toolbox

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

基于springboot的宠物爱好者交流聊天 宠物用品商城系统

所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。需要成品或者定制,如果本展示有不满意之处。点击文章最下方名片联系我即可~,总会有一款让你满意。数据库工具:Navicat/SQLyog/ MySQL Workbench等都可以。查看详细的视频演示,或者了解其他版本的信息。数据库 mysql 版本不限。前端开发框架:vue.js。

bishe288的博客 40

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

上一篇: 【Websocket】JAVA群聊、一对一聊天室
下一篇: 【RPC】认识httpclient(一)
Kanseui ?
博客等级 码龄7年 181粉丝 62原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值