Keras3.0:实现残差连接

news2024/9/22 15:51:48

简介 

       残差连接是一种非常重要的网络结构创新,最早被广泛应用于ResNet(Residual Neural Network)模型中,由何凯明等人在2015年的论文"Deep Residual Learning for Image Recognition"中提出。

 

核心思想

      通过引入“shortcut connections”或者叫做捷径,直接将输入信息跳过若干层传到后面较深的层,然后将这个信息与经过多层非线性变换后的输出进行相加。这样做可以有效缓解随着网络深度增加而出现的梯度消失梯度爆炸问题,使得训练更深的神经网络成为可能,并且能够显著提升模型的性能。

 

结构

2dfaeefb7a5841ac816fe3ebf2347334.jpeg

 

示例

Keras实现残差结构

import keras
from keras.layers import Conv2D, Add
from keras.models import Model

# 定义一个模型
input_layer = keras.Input(shape=(64, 64, 3))  # 创建一个输入层

# 添加一个卷积层,输出维度为64,激活函数为ReLU
x = Conv2D(64, kernel_size=(3, 3), padding='same', activation='relu')(input_layer)

# 添加一个卷积层,输出维度为64,激活函数为ReLU
y = Conv2D(64, kernel_size=(3, 3), padding='same', activation='relu')(x)

# 添加一个卷积层,输出维度为64,激活函数为ReLU,用于残差连接
residual = Conv2D(64, kernel_size=(3, 3), padding='same', activation='relu')(y)

# 将原始输入与残差相加,得到最终输出
output_layer = Add()([x, residual])

# 使用输入层和输出层创建模型
model = Model(inputs=input_layer, outputs=output_layer)

# 使用Adam优化器和均方误差损失函数编译模型
model.compile(optimizer='adam', loss='mse')

# 打印模型的结构信息,包括每一层的名称、输出维度等
model.summary()

模型结构

Model: "model"
__________________________________________________________________________________________________
 Layer (type)                Output Shape                 Param #   Connected to                  
==================================================================================================
 input_1 (InputLayer)        [(None, 64, 64, 3)]          0         []                            
                                                                                                  
 conv2d (Conv2D)             (None, 64, 64, 64)           1792      ['input_1[0][0]']             
                                                                                                  
 conv2d_1 (Conv2D)           (None, 64, 64, 64)           36928     ['conv2d[0][0]']              
                                                                                                  
 conv2d_2 (Conv2D)           (None, 64, 64, 64)           36928     ['conv2d_1[0][0]']            
                                                                                                  
 add (Add)                   (None, 64, 64, 64)           0         ['conv2d[0][0]',              
                                                                     'conv2d_2[0][0]']            
                                                                                                  
==================================================================================================
Total params: 75648 (295.50 KB)
Trainable params: 75648 (295.50 KB)
Non-trainable params: 0 (0.00 Byte)
Non-trainable params: 0 (0.00 Byte)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1369389.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

x-cmd pkg | rg - 文本搜索工具,grep 命令的现代化替代品

目录 简介首次用户功能特点竞品和相关作品进一步阅读 简介 rg(ripgrep) 是一个逐行方式进行( line-oriented )的文本搜索工具,能够递归搜索目录中的文件内容。默认情况下,rg 将遵守 .gitignore 文件规则自…

游戏开发中,你的游戏图片压缩格式使用ASTC了吗

文章目录 ASTC原理:使用要求 ASTC(Adaptive Scalable Texture Compression,自适应可伸缩纹理压缩)是一种高级的纹理压缩技术,由ARM公司开发并推广。它在图形处理领域中因其出色的压缩效率和灵活性而受到广泛关注。 AST…

怎么一边讲PPT一边录视频 如何一边录制PPT一边录制人像 录屏软件免费录屏 PPT录制怎么录制

随着新媒体技术的发展,短视频和直播越来越火。越来越多的小伙伴加入了视频制作的大军,那么你想知道怎么一边讲PPT一边录视频,如何一边录制PPT一边录制人像吗? 一、怎么一边讲PPT一边录视频 我们可以借助PPT本身自带的屏幕录制功能…

rime中州韵小狼毫 随机数 随机码 电脑信息 滤镜

在输入法中支持生成GUID,或者随机数,随机字符,获取自身电脑信息,这将是一个非常酷的功能。 先睹为快 本文所分享滤镜,主要用于生成一些动态的信息词条,效果如下👇: GUID.lua GU…

扫雷游戏(有讲解)

✨欢迎来到脑子不好的小菜鸟的文章✨ 🎈创作不易,麻烦点点赞哦🎈 所属专栏:游戏 我的主页:脑子不好的小菜鸟 引言: 1.数组 2.随机数的生成,我在这篇文章里面详细讲述过:猜数字…

【STM32】STM32学习笔记-串口发送和接收(27)

00. 目录 文章目录 00. 目录01. 串口简介02. 串口相关API2.1 USART_Init2.2 USART_InitTypeDef2.3 USART_Cmd2.4 USART_SendData2.5 USART_ReceiveData 03. 串口发送接线图04. USB转串口模块05. 串口发送程序示例06. 串口发送支持printf07. 串口发送支持printf_v208. 串口发送和…

在线表白网页制作源码,无需数据库,自带网站会员付费

源码介绍 通过在线表白,人们可以以一种浪漫的方式表达自己的感情,只需要填写一些基本信息,就能自动生成精美的表白页面。 为了增加网站的收入,用户可以购买网站会员,以使用指定的网页制作模板。 这个系统无需数据库…

Java中的多线程一

概述 进程 是正在运行的程序 是系统进行资源分配和调用的独立单位每一个进程都有它自己的内存空间和系统资源 线程 进程中的单个顺序控制流,是一条执行路径 单线程: 一个进程如果只有一条执行路径,则称为单线程程序多线程: 一…

编译原理复习笔记--简答题

1、编译过程概述 词法分析:输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词(也称单词符号,或简称符号)语法分析:在语法分析的基础上将单词序列分解成各类语法短语。语义分析&a…

海外代理IP在游戏中有什么作用?

随着科技的飞速发展,手机和电脑等电子产品已成为互联网连接万物的重要工具,深度融入我们的日常生活,我们借助互联网完成工作、休闲和购物等任务,以求提升生活质量。 不仅如此,网络游戏也是人们心中最爱,它…

Tensorflow2.0笔记 - 创建tensor

tensor创建可以基于numpy,list或者tensorflow本身的API。 笔记直接上代码: import tensorflow as tf import numpy as np import matplotlib.pyplot as plttf.__version__#通过numpy创建tensor tensor0 tf.convert_to_tensor(np.ones([2,3])) print(te…

贯穿设计模式-中介模式+模版模式

样例代码 涉及到的项目样例代码均可以从https://github.com/WeiXiao-Hyy/Design-Patterns.git获取 需求 购买商品时会存在着朋友代付的场景,可以抽象为购买者,支付者和中介者之间的关系 -> 中介者模式下单,支付,发货&#xff0…

Golang中for和for range语句的使用技巧、对比及常见的避坑

前言 基础语法不再赘述,写这个原因是之前的某次面试被问道了,我知道会导致问题但具体答下来不是很通顺。再回想自己开发过程中,很多地方都是使用到了for/for range,但是却从没注意过一些细节,因此专门学习一下进行记录…

手把手教你使用cubemx配置串口

重写fput函数 #include <stdio.h>#ifdef __GNUC__#define PUTCHAR_PROTOTYPE int _io_putchar(int ch)#else#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)#endif /* __GNUC__*//*******************************************************************brief R…

Kubernetes (八) 金丝雀发布

一. 金丝雀发布作用&#xff1a; 金丝雀发布是指在生产环境中逐步推出新版本应用程序&#xff0c;只在一小部分用户或流量中使用该版本&#xff0c;并根据反馈逐步扩…

扩展欧几里得算法总结

知识概览 裴蜀定理&#xff1a;对于任意正整数a&#xff0c;b&#xff0c;一定存在非零整数x&#xff0c;y&#xff0c;使得 而且(a, b)是a和b能凑出来的最小的正整数。 通过扩展欧几里得算法可以求得裴蜀定理中x和y的值&#xff0c;x和y的通解为 &#xff0c; 例题展示 扩展欧…

系列十三、集合

一、集合 1.1、概述 集合与数组类似&#xff0c;只不过集合中的数据量可以动态的变化。 1.2、体系图 1.3、List集合 1.3.1、特点 存放的数据可以重复且有序。 1.3.2、常见操作 /*** List集合常见操作* */ Test public void listOperateTest() {List<String> cityList …

vue3 +TS 安装使用pinia状态管理

目录 一.安装 1.下载安装依赖 2.创建src/stores/index.ts文件 3.创建src/stores/states.ts文件 4.创建src/stores/interface/index.ts文件 5.修改main.ts 6.目录结构如下 7.测试使用 8.去到首页点击按钮&#xff0c;打开控制台查看 一.安装 1.下载安装依赖 npm insta…

逆向数据宽度与符号

正数与负数的 刚好是半 所以 0 表示正数 1表示负数 有符号与无符号是程序员定的 并不是开头是1就表示负数 0表示正数 得看有无符号 双字 32bit 4字节

批量置入视频封面:一分钟教程,简单易学

在视频制作过程中&#xff0c;为视频添加引人注目的封面是吸引观众的关键。而当我们需要批量处理多个视频时&#xff0c;如何快速、准确地置入封面就显得尤为重要。本文将为您揭示这一高效技巧&#xff0c;让您在一分钟内学会批量置入视频封面&#xff0c;提升视频的吸引力与观…