| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> TensorFlow实现ResNet -> 正文阅读 |
|
[人工智能]TensorFlow实现ResNet |
目录 1.概述通过tensorflow实现ResNet,需要先定义最小模块basic_block,在其中实现最基本的ResNet前向传播以及短接功能;之后定义ResNet模块,通过堆叠不同个数的basic_block,并拼接到一起,实现ResNet的功能实现。 2.Basic_Block① __init__在这里面定义好需要使用的层。 根据ResNet的原理,流程如下:卷积层--BatchNormalize--relu--卷积层--BatchNormalize,之后将输出与输入element-wise相加。 因此需要定义卷积层1、标准化层1、RELU层、卷积层2、标准化层2 还需要定义一个方法,在输出与输出维度不等的时候,把输入变成和输出相等的维度。 ?②call在这里按照流程调用上面定义的层即可。 在最后输入输出相加。 ? 3.Resnet①build_block定义类中的方法,用来搭建我们需要的ResNet模块。 搭建模块需要调用上面的BasicBlock, 模块的数量可以由我们自定义,因此作为变量输入。 第一个模块,可以进行图片大小的改变,比如[2,32,32,3] -->[2,16,16,64],大小变成了16*16。 之后的模块,大小不变,因此stride参数固定为1。 BasicBlock中的通道数量我们自己定义,因此也作为变量输入。 ②__init__这里面定义需要使用的层。 首先需要对数据初始化,将输入的数据先进行一次卷积+标准化+非线性+池化,变成通道数为64的数据(这个64也是自己定的),对应好了通道数,后面就可以根据通道数定义网络的层了。 输入的层的维度如果是[2,2,2,2],就相当于搭建4个残差网络层,其中每一个层中间有2个基本模块。 最后一个层输出后,图片的长宽我们并不知道,因此通过GlobalAveragePooling2D层来得到。 最后定义一个线性层,转为最终的预测的维度。这里我设为了100维。 ? ③call根据上面的流程依次调用层即可。 当设置好了以后,直接输入层的维度,即可实现ResNet18,ResNet34等: |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 6:40:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |