双边网格学习、Bilateral Learning

bilateral grid(双边网格) 双边网格(bilateral grid)的原理全解析,非常通俗易懂 阅读详情

目录

背景

方法

结论


挖坑,双边网格学习。双边网格具有很多优良的特性,在图像恢复等方面还具有很多的价值可以挖掘,因此本系列我会把相关论文和代码以我的理解写成博客,留做记录,代码运行过程中如果有问题或者发现我也会写到博客里。

背景

双边网格学习有些相似于双边滤波。

双边滤波(Bilateral Filter)是非线性滤波中的一种,结合图像的空间邻近度与像素值相似度。 在滤除噪声、平滑图像的同时,又保存边缘。一个负责计算空间邻近度 的权值,也就是常用的高斯 滤波器原理。而另一个负责 计算像素值相似度的权值。 在两个高斯滤波的同时作用 下,就是双边滤波。

方法

有空细细研究一下代码实现。

双边网格一维主要示意图:

 二维示意图


《Real-time Edge-Aware Image Processing with the Bilateral Grid》是2007年的利用双边网格的一篇传统方法图像处理的文章,文章利用双边网格进行快速的图像中增强,即将细节、曝光较差的图像进行恢复。

《Deep Bilateral Learning for Real-Time Image Enhancement》是2017年的利用双边网格和深度学习的HDR图像实时增强文章,效果不错。

阅读论文《Deep Bilateral Learning for Real-Time Image Enhancement》_CHNguoshiwushuang的博客-优快云博客_enhancement   这是2017 siggraph的一篇论文,寒假boss让我看这篇论文我没怎么看懂。最近在公司实习,发现该论文的成果已经移到手机端上了,效果还非常不错。这里我重新温习了一下这篇论文,发现有许多可以借鉴的地方,是一篇非常不错的论文,这里重新叙述一下,谈谈我的理解。    首先说一下这篇文章的整体思路,这篇文章对于图像增强的方法是,将图像首先做下采样,继续卷积下采样几次然后分别学习其全局特征和局...https://blog.youkuaiyun.com/CHNguoshiwushuang/article/details/81843826?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1.pc_relevant_antiscanv2&utm_relevant_index=2
《Ultra-High-Definition Image Dehazing via Multi-Guided Bilateral Learning》是2021年的去雾文章,该论文为2021cvpr上的一篇去雾文章,主打高清图像快速去。

(最新更新2022.3.24)

双边网格学习一:2021cvpr《Ultra-High-Definition Image Dehazing via Multi-Guided Bilateral Learning》_Alocus_的博客-优快云博客背景方法,据论文所述,在实时性方面达到较好结果。核心采用双边网格,双边网格能够关注色彩突变的物体边界,并能够很好的关注于高频信息上面是该网络的主要架构图,可以看到非常地简洁,实际上,为了简洁而简洁可能有时候会对读者造成一定的误导。如,在该模型中的特征提取部分代码里使用的是Unet网络,图中则画的很简单,另外在RGB图像表示部分也不够清楚,实际上在图像输入之后也会有一个unet进行特征提取,然后对提取后的特征分别进行三次卷积,以生成三个通道共九个通道的R, G, B channel。本文.https://blog.youkuaiyun.com/Crystal_remember/article/details/123715221

结论

我会在随后的更新中进行文章细致的代码注释。复现等工作,由于手头任务较多,因此可能较慢,就算督促自己进行学习、总结吧。

—————————————————待完善—————————————————

基于三角面法向的双边滤波网格平滑算法实现 基于三角面法向的双边滤波网格平滑 阅读详情

相关推荐

双边网格学习一:2021cvpr《Ultra-High-Definition Image Dehazing via Multi-Guided Bilateral Learning》

背景 方法 ,据论文所述,在实时性方面达到较好结果。核心采用双边网格,双边网格能够关注色彩突变的物体边界,并能够很好的关注于高频信息 上面是该网络的主要架构图,可以看到非常地简洁,实际上,为了简洁而简洁可能有时候会对读者造成一定的误导。如,在该模型中的特征提取部分代码里使用的是Unet网络,图中则画的很简单,另外在RGB图像表示部分也不够清楚,实际上在图像输入之后也会有一个unet进行特征提取,然后对提取后的特征分别进行三次卷积,以生成三个通道共九个通道的R, G, B channel。 本文.

Alocus的博客 7881

双边滤波和双边网格

双边滤波 双边滤波器也是一种保边滤波器.和导向图滤波器一样,可以达到在平坦区域进行均值(高斯)滤波的效果,在边缘不进行滤波的效果.其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高斯函数相乘. 其中空间距离指的是当前点与中心点的欧式距离。空间域高斯函数其数学形式为: (xi,yi)为当前点位置,(xc,yc)为中心点的位置,sigma为空间域标准差. 灰度距离指的是当前点灰度(像素点值)与中心点灰度的差的绝对值。值域高斯函数其数学形式为 其中gray(xi,yi)为当前点灰度值,.

qq26983255的博客 6548

阅读论文《Deep Bilateral Learning for Real-Time Image Enhancement》

   这是2017 siggraph的一篇论文,寒假boss让我看这篇论文我没怎么看懂。最近在公司实习,发现该论文的成果已经移到手机端上了,效果还非常不错。这里我重新温习了一下这篇论文,发现有许多可以借鉴的地方,是一篇非常不错的论文,这里重新叙述一下,谈谈我的理解。    首先说一下这篇文章的整体思路,这篇文章对于图像增强的方法是,将图像首先做下采样,继续卷积下采样几次然后分别学习其全局特征和局...

CHNguoshiwushuang的博客 1万+

双边格网(bilateral grid)

双边滤波速度很慢 —> 加速,双边网格。 首先明确一点,双边网格本质上是一个数据结构。 以单通道灰度值为例,双边网格结合了图像二维的空间域信息以及一维的灰度信息,可认为其是一个3D的数组。 举一个简单的例子,假设现在你手上有一只用于滤波/平滑的笔刷,当你用这只笔刷在图像EEE上的某一个位置(x,y)(x,y)(x,y)处点击了一下,对应的,3D双边网格的(x,y,E(x,y))(x,y,E(x,y))(x,y,E(x,y))位置将出现一个点,这个点即对应你在2D影像EEE上点击的那个点。随着这只笔刷

flow_specter的博客 8638

论文阅读笔记 《Bilateral Grid Learning for Stereo Matching Networks》[2021]

论文提出了一种边缘保留(edge-preserving)的cost volume上采样模块,其基于可学习的双边网格(bilateral grid)中的slicing操作(这里我翻译成了“切片”),这让我们能够在可学习的guidance map的指导下,从低分辨率的cost volume中获得高质量且高分辨率的cost volume。双边滤波器是一种边缘保留的滤波器,在图像去噪方面有广泛的应用,但是,双边滤波器的原始实现是耗时的,所以,双边网格(Bilateral Grid)被提出来用于加快双边滤波的速度。

weixin_56127994的博客 844

Deep Bilateral Learning for Real-Time Image Enhanceme/hdrnet 笔记

本文参考论文Deep Bilateral Learning for Real-Time Image Enhanceme,按照原文中的第三章,通过阐述重点思想并结合代码来介绍hdrnet的网络结构。 论文project地址:https://groups.csail.mit.edu/graphics/hdrnet/ 3 OUR ARCHITECTURE 大部分的运算发生在低分辨率的图像上,即上...

沉剑池 5255

hdrnet,Deep Bilateral Learning for Real-Time Image Enhancement解读

这是一个复杂的摄影管道,包括色彩校正、自动曝光、去雾和色调映射等操作。:这个数据集由Bychkovsky等人提供,包含了500张用于验证和测试的图像,其余4500张用于训练。数据集中的图像被用来应用各种效果,并且通过随机裁剪、翻转和旋转进行数据增强。:这个数据集包含了标记的面部图像,用于面部明亮化任务。:这个数据集是通过将MIT“FiveK”数据集中的每个图像映射到100个不同的图像(风格目标)来生成的。

bug404 2360

直方图双向均衡算法(hde)的matlab实现

直方图双向均衡算法(hde)先通过he处理后再将直方图等间距排列,使图像细节更加明显

CVPR2021|用于立体匹配的可学习双边网格

编辑丨3D视觉开发者社区高精度的实时立体匹配网络是时下研究的一个热点,它在自动驾驶、机器人导航和增强现实等领域中有着广泛的应用。虽然近年来对立体匹配网络的研究已经取得了显著的成果,但要同时...

3D视觉工坊 2857

hdrnet:SIGGRAPH 2017的``深度双边学习以实现实时图像增强''的实施

深度双边学习,用于实时图像增强 Siggraph 2017 访问我们的。 加文·陈(Jonathan T.) 由Michael Gharbi( )维护 在Python 2.7,Ubuntu 14.0,gcc-4.8上进行了测试。 免责声明 这不是Google的官方产品。 设置 依存关系 要安装Python依赖项,请运行: cd hdrnet pip install -r requirements.txt 建造 我们的网络需要自定义Tensorflow运算符以在双边网格中“切片”。 要构建它,请运行: cd hdrnet make 要构建基准测试代码,请运行: cd benchmark make 请注意,基准测试代码需要冻结和优化的模型。 使用hdrnet/bin/scripts/optimize_graph.sh和hdrnet/bin/freeze.py to produce

Linux之SUSE系统SAP-HANA经常系统内存不足使得SAP应用不能使用解决方案

问题描述 Linux内存使用量超过阈值,使得sap应用程序无可用内存,最终导致程序崩溃。 问题原因 自己查阅了一些资料,也基于zabbix的可用内存和实际不太一样入手去找原因发现问题出现于Cached的值过大,导致系统没有可以再分配的内存空间。Cached只要用来缓存文件的,经常读写的文件会被缓存到Cached中,可以增加读写效率,该功能是Linux系统内核提供的,而SAP-HANA的日志文件很大...

liuxiangyang_的博客 6710

Ultra-High-Definition Image Dehazing via Multi-Guided Bilateral Learning(基于多引导双边学习的超高清图像去雾CVPR2021)

摘要:卷积神经网络在单幅图像去雾任务中取得了显著的成功。遗憾的是,现有的深度去雾模型计算复杂度高,难以应用于高分辨率图像,特别是UHD或4K分辨率的图像。为了解决这一问题,我们提出了一种新的网络,能够在单个GPU上实现4K图像的实时去雾,该网络由三个深度CNN组成。首先CNN以降低的朦胧输入分辨率提取与雾相关的特征,然后在双边空间中拟合局部仿射模型。另一个CNN用于学习多个全分辨率导航图对应的双边模型。因此,通过多导双侧上采样可以重建高频特征图。最后,第三个CNN将高质量的特征映射融合成去雾图像。此外,我们

yanglong6666的博客 3323

用本地 Chrome + DeepSeek 实现浏览器自动化:browser-use 实战与踩坑记录

本文记录了使用本地Chrome浏览器结合DeepSeek API实现浏览器自动化的实战经验。作者通过browser-use项目连接本地Chrome(启动时需添加--remote-debugging-port=9222参数),并解决了DeepSeek API不支持response_format的问题,通过设置dont_force_structured_output=True和add_schema_to_system_prompt=True成功绕过。同时分享了任务描述需精准的重要性,避免Agent输出多余信息导

LY的博客 750

Deep Bilateral Learning for Real-Time Image Enhancement

性能是移动图像处理中的关键挑战。给定参考成像管道,甚至是人工调整的图像对,我们寻求重现增强功能并实现实时评估。为此,我们引入了一种新的神经网络架构,其灵感来自双边网格处理和局部仿射颜色变换。使用输入/输出图像对,我们训练卷积神经网络来预测双边空间中局部仿射模型的系数。我们的架构学习如何做出局部的,全局的和依赖于内容的决策来近似所需的图像变换。在运行时,神经网络消耗输入图像的低分辨率版本,在双边空间...

u013049912的博客 2105

鸿蒙手机卸载内置应用 adb连接

**傻瓜式删除鸿蒙系统内置应用,自己亲测有效。**

JJDXBT的博客 3万+

HSMS/SECS/GEM/GEM300半导体通讯协议介绍

HSMS/SECS/GEM/GEM300半导体通讯协议解决方案介绍 目录 SECS/GEM协议通讯 1 目录 2 1.介绍 3 1.1 产品概述 3 1.1.1 高扩展性 4 1.2 通讯实现 4 1.2.2多主机实现 4 1.3 当前的SEMI标准 5 1.3.1 功能跟友商对比 6 1.4 软件灵活性 7 1.5 无需学习SECS 7 1.6 自定义消息传递 8 1.7 记录收集 8 1.8 SECS Manual文档 8 1.9 产品清单 8 2 产品结构 9 2.1 控制面板 9 2.2 使用环境

semisecs 16万+

论文阅读笔记:Bilateral Grid Learning for Stereo Matching Networks

摘要 立体匹配网络的实时性能对于许多应用都很重要,例如自动驾驶、机器人导航和增强现实 (AR)。尽管近年来立体匹配网络取得了重大进展,但平衡实时性能和准确性仍然具有挑战性。在本文中,我们提出了一种有效的边缘保留的匹配代价卷上采样模块,它是基于可学习的双边网格中的切片操作。切片层是无参数的,在可学习引导图的作用下,这使我们能够从低分辨率的特征图获得高质量的匹配代价卷。我们提出的成本量上采样模块可以无缝嵌入到许多现有的立体匹配网络中,例如 GCNet、PSMNet 和 GANet。这些网络可因此被加速,同时保持

weixin_42677507的博客 2977

零基础入门simulink建模仿真--基于Simulink的QPSK调制与解调仿真建模示例

QPSK是一种相位调制技术,将两个比特映射到一个符号上,每个符号对应四个可能的相位之一(0°、90°、180°、270°)。通过Simulink,我们可以通过模块化的建模方式实现QPSK的调制和解调过程,并观察信号在信道中的传输效果。通过本指南,我们介绍了如何基于Simulink搭建一个完整的QPSK调制与解调仿真模型,并进行仿真和性能评估。背景介绍:理解QPSK调制与解调的基本原理及其应用。所需工具和环境:列出进行QPSK仿真所需的工具和环境。步骤详解。

amy_mhd的博客 1308

【深度学习】Deep Bilateral Learning for Real-Time Image Enhancements

1. 简述: hdrnet是CNN在图像处理领域的成功实践,同时该框架的提出后,被成功的迁移到其他视觉领域,如降噪、风格迁移。当然在该论文中其主要作用是hdr,即图像的暗部亮部细节增强。 论文:Deep Bilateral Learning for Real-Time Image Enhancements github地址:https://github.com/google/hdrnet 项目地址:https://groups.csail.mit.edu/graphics/hdrnet/ 2. 方

a200800170331的专栏 2301

wireshark提取视频数据之RTP包中提取H264和H265

本文主要描述从wireshark包数据中提取出H264和H265裸流数据方法,裸流通过RTP封包方式发送,从抓包中直接提取视频流数据,进而进行流媒体问题定位

技术控的笔记 17万+

C# 与欧姆龙 PLC 实战:通过 Ethernet/IP 协议进行设备控制与监控

本文介绍了如何通过C#和Ethernet/IP协议实现与欧姆龙PLC的通信。Ethernet/IP是基于以太网的工业协议,适用于工业设备间的实时数据交换。文章详细讲解了使用EthernetIPSharp库建立连接、读写数据的步骤,并提供了示例代码。此外,还探讨了实时监控、报警系统等高级功能,为工业自动化控制系统开发提供了实用指导。该方法简化了PLC通信开发,提高了系统可靠性和智能化程度。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 811

【CVPR2021】用于立体匹配的可学习双边网格

高精度的实时立体匹配网络是时下研究的一个热点,它在自动驾驶、机器人导航和增强现实等领域中有着广泛的应用。虽然近年来对立体匹配网络的研究已经取得了显著的成果,但要同时兼顾实时性和高精度仍然是一个挑战。现有的高精度立体匹配网络,通常需要在较高的分辨率建立代价空间。比如,GANet在1/3分辨率建立代价空间,PSMNet在1/4分辨率,但这会影响网络的效率(GANet处理一对1242×375的图像,需要1.8s,PSMNet需要0.41s)。

limingmin2020的博客 904

Spring Boot 集成 Spring AI:实现可被大模型调用的 MCP Server

本文介绍了如何利用Spring AI框架构建MCP Server,使大模型能够调用业务系统的接口。主要内容包括:1)MCP协议简介,分为MCP Server和Client两部分;2)环境配置要求,需Java 17+和Spring Boot 3.5.0+;3)实现步骤,通过@McpTool注解将Service方法暴露给大模型调用;4)使用Cherry Studio作为MCP Client测试效果,成功实现订单查询和下单功能。本文仅实现MCP Server部分,后续将介绍如何开发MCP Client。

iioSnail的博客 2126

论文阅读:Deep Bilateral Learning for Real-Time Image Enhancement 的工程化落地——从论文到可复现推理管线

复现 Deep Bilateral Learning 实时图像增强,关键在低分辨率预测双边网格系数、slicing 层保边上采样。本文给出可复制推理管线配置、引导图对齐与批处理边界,并用 TaoToken 统一 Key/API 通道管理调用侧环境变量,跑通单图增强与耗时画质对比。详见 https://taotoken.net/?utm_source=taotoken_aicg_blog_end

weixin_42612405的博客 193

jre9下载 jdk9

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

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

上一篇: 超分辨率重建学习总结、SR、super resolution、single image super resolution
下一篇: 视频运动放大一:欧拉视频放大,《Eulerian video magnification for revealing subtle changes in the world》
Alocus_
Alocus_ 新星创作者: 人工智能技术领域 新星创作者: 人工智能技术领域
博客等级 码龄9年 2万+粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

Alocus_

如果我的内容帮助到你,打赏我吧

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

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

打赏作者

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

抵扣说明:

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

余额充值