IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 前向传播网络实现(类与函数)——TensorFlow2.4 -> 正文阅读

[人工智能]前向传播网络实现(类与函数)——TensorFlow2.4


前言

最近开始着手语义分割方面的内容,由于刚开始入门深度学习,看了一下deeplab的源码,里面所有网络结构基本上都是由类进行定义的(目的是为了方便复用),而大部分博主的复现代码基本上都是基于函数实现,作为小白的我一时有点蒙圈。为了更好地理解前向传播吧以及类与函数定义的网络结构,本文分别用类核函数实现了简单的前向传播函数


提示:以下是本篇文章正文内容,下面案例可供参考

一、基于类的前向传播

python是面向对象的语言,然后巴拉巴拉。。。
用类定义网络,可以理解为定义了一个网络变量,不同的变量进行组合就构成了各式各样的复杂 网络结构
由类定义的前向传播网络代码示例如下(示例):

import  tensorflow as tf
from    tensorflow import keras
from    tensorflow.keras import layers, Sequential
class Network(keras.Model):
    def __init__(self):
        super(Network, self).__init__()
        # 创建三个前向传播网络
        self.fc1 = layers.Dense(64,activation="relu")
        self.fc2 = layers.Dense(64,activation="relu")
        self.fc3 = layers.Dense(1)
    def call(self, inputs, training = None, mask = None):
        x = self.fc1(inputs)
        x = self.fc2(x)
        x = self.fc3(x)
        return x
model = Network()
model.build(input_shape=(4,9))
model.summary()

二、基于函数的前向传播

函数大家都经常用,输入-功能-输出

由函数实现的前向传播网络代码如下(示例):

import  tensorflow as tf
from    tensorflow.keras import layers
from tensorflow.keras import  Model

def Network(input_shape=(256,256,3)):
    inputs = layers.Input(input_shape)
    fc1 = layers.Dense(64,activation="relu")(inputs)
    fc2 = layers.Dense(64,activation="relu")(fc1)
    fc3 = layers.Dense(1)(fc2)

    return Model(inputs =inputs,outputs = fc3)
model = Network()
model.summary()

总结

我们可以发现类定义的网络结构,首先继承了keras.Model类(将网络层封装成一个用于训练和推理的模型),然后对Network类进行初始化,包括定义每一层的网络类型,以及网络传播形式(call),定义传播形式的需要定义输入input。将模型实例化时,需要先进行根据输入的shape构建模型,然后才能打印模型:
model = Network()
model.build(input_shape=(4,9))
model.summary()

由函数定义的前向传播网络就比较简单啦,首先定义函数名,输入,然后按照网络结构传播变量,这里面卷积函数处理的变量必须为tensor类型即:

inputs = layers.Input(input_shape)

最后需要将网络模型封装成一个可以用于训练和推理网络模型
在实现过程中比较容易出问题的地方就是模型的实例化,这里还不是太明白。。。。。。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:27:05  更:2021-12-04 13:29:04 
 
开发: 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 3:49:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码