金堂县建设局网站湖北城市建设职业技术学院教务网站

web/2025/9/30 11:55:15/文章来源:
金堂县建设局网站,湖北城市建设职业技术学院教务网站,百度网盘app官网下载,专业展馆展厅设计公司深圳写在前面 尽管 tf.keras 提供了很多的常用网络层类#xff0c;但深度学习可以使用的网络层远远不止这些。科研工作者一般是自行实现了较为新颖的网络层#xff0c;经过大量实验验证有效后#xff0c;深度学习框架才会跟进#xff0c;内置对这些网络层的支持。因此掌握自定…写在前面 尽管 tf.keras 提供了很多的常用网络层类但深度学习可以使用的网络层远远不止这些。科研工作者一般是自行实现了较为新颖的网络层经过大量实验验证有效后深度学习框架才会跟进内置对这些网络层的支持。因此掌握自定义网络层、网络的实现非常重要。 写在中间 1. 初始化方法 对于自定义的网络层我们至少需要实现初始化__init__方法和前向传播逻辑call方法。我们以具体的自定义网络层为例假设需要一个没有偏置向量的全连接层即 bias 为0同时固定激活函数为 ReLU 函数。我们通过实现这个“特别的”网络层类来阐述如何实现自定义网络层。 首先创建类并继承自 Layer 基类。 创建初始化方法并调用母类的初始化函数由于是全连接层因此需要设置两个参数输入特征的长度 inp_dim 和输出特征的长度outp_dim并通过 self.add_variable(name, shape)创建 shape 大小名字为 name 的张量并设置为需要优化。 class MyDense(layers.Layer):def __init__(self, inp_dim, outp_dim):super(MyDense, self).__init__()# 添加权重用于线性变换self.kernel self.add_weight(w, [inp_dim, outp_dim])# 添加偏置项self.bias self.add_weight(b, [outp_dim])完成自定义类的初始化工作后我们来设计自定义类的前向运算逻辑对于这个例子只需要完成 矩阵运算并通过固定的 ReLU 激活函数即可 自定义类的前向运算逻辑实现在 call(inputs, trainingNone)函数中其中 inputs代表输入由用户在调用时传入training 参数用于指定模型的状态training 为 True 时执行训练模式training 为 False 时执行测试模式默认参数为 None即测试模式。 def call(self, inputs, trainingNone): # 实现自定义类的前向计算逻辑 # XW out inputs self.kernel # 执行激活函数运算 out tf.nn.relu(out) return out 2. 自定义网络 Sequential 容器适合于数据按序从第一层传播到第二层再从第二层传播到第三层以此规律传播的网络模型。对于复杂的网络结构例如第三层的输入不仅是第二层的输出还有第一层的输出此时使用自定义网络更加灵活。下面我们来创建自定义网络类 首先创建类并继承自 Model 基类 接着在类里创建对应的网络层对象。 然后实现自定义网络的前向运算逻辑。 class MyModel(tf.keras.Model):def __init__(self):super(MyModel, self).__init__()# 添加自定义的全连接层作为网络的组成部分self.fc1 MyDense(28 * 28, 256) # 输入维度为28*28输出维度为256self.fc2 MyDense(256, 128) # 输入维度为256输出维度为128self.fc3 MyDense(128, 64) # 输入维度为128输出维度为64self.fc4 MyDense(64, 32) # 输入维度为64输出维度为32self.fc5 MyDense(32, 10) # 输入维度为32输出维度为10def call(self, inputs, trainingNone):前向传播函数Args:inputs (tf.Tensor): 输入张量training (bool, 可选): 是否处于训练模式Returns:tf.Tensor: 输出张量x self.fc1(inputs) # 经过第一层全连接层x tf.nn.relu(x) # ReLU激活函数处理x self.fc2(x) # 经过第二层全连接层x tf.nn.relu(x) x self.fc3(x) # 经过第三层全连接层x tf.nn.relu(x)x self.fc4(x) # 经过第四层全连接层x tf.nn.relu(x)x self.fc5(x) # 经过第五层全连接层无激活函数处理直接输出结果return x 只学理论可不行我们还要学会实际应用接下来我们就使用cifar10数据集来实战 3. cifar10实战 CIFAR-10是一个包含60000张32x32 RGB彩色图片的数据集被用于物体识别。数据集包含10个类别的图片每个类别有6000张。这些类别包括飞机、汽车、鸟类、猫、鹿、狗、蛙类、马、船和卡车。其中50000张图片用于训练集10000张图片用于测试集。与MNIST数据集相比CIFAR-10数据集的图像具有更高的色彩分辨率和更复杂的物体形状因此对物体识别的挑战更大。 注意由于我们的图像的尺寸很小图案本身就不清楚加之网络简单所以训练出的模型准确率不高是正常现象。 import tensorflow as tf from tensorflow.keras import datasets, layers, optimizers, Sequential, metrics# 图像预处理函数 def preprocess(x, y):# 一张一张的传入图像数据# 将图片数值范围调整到[-1, 1]x 2 * tf.cast(x, dtypetf.float32) / 255. - 1.# 标签数据y tf.squeeze(y) # 删除大小为 1 的维度y tf.cast(y, dtypetf.int32) # 将标签转换为int32类型y tf.one_hot(y, depth10) # 将标签转为one-hot编码return x, y# 加载CIFAR10数据集,分为训练数据和测试数据 (x, y), (x_test, y_test) datasets.cifar10.load_data()# 打印数据集信息 print(datasets:, x.shape, y.shape, x_test.shape, y_test.shape) print(图片像素范围, x.min(), x.max())# 处理训练集 train_db tf.data.Dataset.from_tensor_slices((x, y)) train_db train_db.map(preprocess).shuffle(10000).batch(128)# 处理测试集 test_db tf.data.Dataset.from_tensor_slices((x_test, y_test)) test_db test_db.map(preprocess).batch(128)# 取一个batch并打印shape sample next(iter(train_db)) print(batch:, sample[0].shape, sample[1].shape)# 自定义全连接层 class MyDense(layers.Layer):# 初始化函数def __init__(self, inp_dim, outp_dim):super(MyDense, self).__init__()# 添加一个kernel变量,作为自定义层的权重矩阵# inp_dim为输入特征维度,outp_dim为输出特征维度self.kernel self.add_weight(w, [inp_dim, outp_dim])# 前向计算函数def call(self, inputs, trainingNone):# inputs为输入张量# self.kernel为自定义层的权重矩阵# 使用矩阵乘法计算线性变换x inputs self.kernel# 返回计算结果return x# 自定义模型类,继承自tf.keras.Model class MyNetwork(tf.keras.Model):# 初始化函数def __init__(self):super(MyNetwork, self).__init__()# 定义全连接层,层间节点数逐步减小self.fc1 MyDense(32 * 32 * 3, 256)self.fc2 MyDense(256, 128)self.fc3 MyDense(128, 64)self.fc4 MyDense(64, 32)self.fc5 MyDense(32, 10)# 前向计算函数def call(self, inputs, trainingNone):# 将输入reshape为一维向量x tf.reshape(inputs, [-1, 32 * 32 * 3])# 通过自定义的全连接层计算x self.fc1(x)x tf.nn.relu(x)x self.fc2(x)x tf.nn.relu(x)x self.fc3(x)x tf.nn.relu(x)x self.fc4(x)x tf.nn.relu(x)x self.fc5(x)# 返回最终结果return x# 构建网络 network MyNetwork() network.compile(optimizeroptimizers.Adam(learning_rate1e-3),losstf.losses.CategoricalCrossentropy(from_logitsTrue),metrics[accuracy])# 训练 network.fit(train_db, epochs15, validation_datatest_db, validation_freq1)# 评估 print(测试集评估...) network.evaluate(test_db) # 保存权重 network.save_weights(ckpt/weights.ckpt) print(保存权重...)# 恢复权重 network MyNetwork() network.compile(optimizeroptimizers.Adam(lr1e-3),losstf.losses.CategoricalCrossentropy(from_logitsTrue),metrics[accuracy])network.load_weights(ckpt/weights.ckpt) print(读取权重重新评估...) network.evaluate(test_db) 写在最后 点赞你的认可是我创作的动力 ⭐收藏你的青睐是我努力的方向 ✏️评论你的意见是我进步的财富

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

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

相关文章

机械网站建设中心天津市建设工程监理公司网站

发现一个神奇的情况: 清除和关闭的操作: 1. 2.右键 3.点击 4.清空 5.最后需要关闭 QQ输入法的进程

企业网站 asp.net乾县网站建设

509. 斐波那契数 public static int fib(int n) {// 找出最后一步// 定义损失函数 定义记忆化存储基本单元// 状态转移方程 f(n) f(n-2)f(n-1); n > 0// 边界 (递归过程中需要判断)// 初始化 (在未递归之前需要处理)// 返回答案if (n 0) {return 0;}if (n 1) {return 1;…

梧州网站建设制作突唯阿网站seo

quickx是对cocos2dx的lua扩展,它做了一些C的扩展,同时还在lua做了一些封装, 让用lua开发cocos2dx更快,中文站http://quick.cocoachina.com/。 由于现在的项目对cocos2dx有一些修改,又想用到quickx的便捷,于…

织梦cms可以做外贸网站吗大连甘井子区社区工作者招聘

GZ032 信息安全管理与评估赛题第1套 一、 单选题 (每题 2 分,共 35 题,共 70 分) 1、《中华人民共和国数据安全法》已由中华人民共和国第十三届全国人民代 表大会常务委员会第二十九次会议通过,现予公布,自…

阳信网站建设凡科模板建站

Kubernetes在数字化转型中的作用 数字化转型是指在现代化社会中,利用数字技术来改变企业、组织或个人的业务模式、流程和价值创造方式的过程。这包括使用数字技术来提高效率、创新产品或服务、优化客户体验和开发新的业务模式等方面。数字化转型是一个全球性的趋势…

万网网站建设步骤seo关键词排行优化教程

在 Angular 2 及以上版本与 C#结合使用 REST API 的示例中,我们将分别展示前端 Angular 服务和后端 C# Web API 的实现。 一、前端:Angular 服务 生成 Angular 服务 使用 Angular CLI 生成一个新的服务,例如user.service.ts: ng…

wordpress搭建网站教程企业门户网站建设现状

MyBatis 的前身就是 iBatis 。是一个数据持久层(ORM)框架。 iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这…

安庆跨境电商建站哪家好.net flash网站模板

Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。可以使用man man 查看man的使用方法1.man共有以下几个章节代码功能1标准用户命令(Executable programs or shell commands)2系统调用(System calls)functions…

100个有趣的网站廊坊网站制作推广

.NET Core运行时已经看到了实现真正的跨平台的美好前景,它最终出现在Linux和Mac OS X平台上。在上周举办的Microsoft Build大会上,来自微软的项目经理Habib Heydarian为听众分析了这一举措对开发者们所带来的益处,并告诉开发者们如何开始探索…

公司网站工商备案怎么做做App和网站 聚马

撰写测试Bug提交说明时,清晰、详细和准确是至关重要的。这有助于开发团队快速理解问题、重现Bug并修复它。以下是一个测试Bug提交说明的模板,可以根据实际情况进行调整: 测试Bug提交说明 1. Bug基本信息 Bug编号:[系统自动生成…

淘宝网站建设可行性分析报告怎么做网站页面代码搜索

声明:本文原创首发于公众号夕小瑶的卖萌屋。作者:智商掉了一地--->【我是传送门】,内含海量CV/NLP/ML入门资料、必刷综述、前沿论文解读、交流社群、offer神器、学习神器等在介绍接下来的内容前,我们先来看一则笑话&#xff1a…

湖南做网站 磐石网络引领定制企业app开发

论文名称:Pegasus: Tolerating Skewed Workloads in Distributed Storage with In-Network Coherence Directories 摘要 高性能分布式存储系统面临着由于偏斜和动态工作负载引起的负载不平衡的挑战。本文介绍了Pegasus,这是一个利用新一代可编程交换机…

设计师网站库深圳最新动态实时更新

在 Java NIO(New I/O)中,Selector 是一种多路复用的机制,用于管理多个通道的 I/O 操作。通过使用 Selector,我们可以在一个线程中同时管理多个通道的读写操作,提高系统的效率和性能。 本篇博客将详细介绍 …

大气手机网站模板免费下载网站建设公司高端

文章目录 数据数据类型 数据分析过程数据采集数据采集源数据采集方法 数据清洗清洗数据数据集成数据转换数据脱敏 数据 《春秋左传集解》云:“事大大其绳,事小小其绳。”体现了早期人类将事情的“大小”这一性质抽象到“绳结大小”这一符号上从而产生数…

上海专业制作电子商务网站硬件开发专业

二、快速入门 2.1 打开IDEA,点击New一个项目 入口,依次打开 File -> New -> Project。 2.2 使用Spring Initializr方式构建Spring Boot项目 2.3 设置项目所属组、项目名称、java版本等 2.4 选择SpringBoot版本及依赖组件 点击Create进行创建。 2.6 创建成…

北京小型网站建设网址你懂我意思吧在线2020

敏捷需求管理是一种以敏捷方式进行需求收集、分析和确认的方法。它强调持续不断的需求迭代和交付,以适应快速变化的市场和业务需求。 敏捷需求管理的主要特点包括: 以用户故事为核心:敏捷需求管理以用户故事为核心,将用户需求作…

网站建网站建设和优网站设计网站建设公司

前言 本文主要介绍通过udp方式实现rtsp拉流。 流程图 流程说明: 相较于tcp方式“信令数据”复用同一连接拉流,udp方式拉流“信令数据”采用不同的连接,信令传输采用tcp,流数据传输采用udp;客户端向服务端&#xff0…

目前做网站框架怎么在wordpress中添加类似赶集网的地图

纹识别技术近年来逐渐成熟,在门禁、安防和金融等方面得到了越来越广泛的应用。典型的指纹识别系统是以指纹传感器和DSP处理器为核心构成。指纹传感器采集指纹图像,DSP处理器实时实现指纹识别算法。同时,通常的指纹识别系统还具有较强的通信能…

网站下载软件残疾人招聘网站建设

Mybatis 有两级缓存: 一级缓存: 也称为本地缓存,SqlSession级别的缓存。一级缓存是一直开启的; 与数据库同一次会话期间查询到的数据会放在本地缓存中,以后如果需要获取相同的数据,直接从缓存中拿&#xff…