Tensorflow2.0 Keras之模型装配

tensorflow2.0教程- Keras 快速入门 tensorflow.keras 快速入门 完整tensorflow2.0教程代码请看tensorflow2,0:中文教程tensorflow2_tutorials_chinese(欢迎star) Keras 是一个用于构建和训练深度学习模型的高阶 API。它可用于快速设计原型、高级研究和生产。 keras的3个优点: 方便用户使用、模块化和可组合、易于扩展 1.导入tf.keras tens... 阅读详情

Tensorflow2.0 Keras之模型装配

模型装配

在 Keras 中,有2 个比较特殊的类:keras.Model 和keras.layers.Layer 类。其中Layer类是网络层的母类,定义了网络层的一些常见功能,如添加权值、管理权值列表等。Model 类是网络的母类,除了具有Layer 类的功能,还添加了保存模型、加载模型、训练与测试模型等便捷功能。Sequential 也是Model 的子类,因此具有Model 类的所有功能。

创建网络层

接下来介绍Model 及其子类的模型装配与训练功能。我们以Sequential 容器封装的网络为例,首先创建5 层的全连接网络,用于MNIST 手写数字图片识别,代码如下:

network = Sequential([layers.Dense(256, activation='relu'),
layers.Dense(128, activation='relu'),
layers.Dense(64, activation='relu'),
layers.Dense(32, activation='relu'),
layers.Dense(10)])
network.build(input_shape=(4, 28*28))

模型装配

创建网络后,正常的流程是循环迭代数据集多个Epoch,每次按批产生训练数据、前向计算,然后通过损失函数计算误差值,并反向传播自动计算梯度、更新网络参数。这一部分逻辑由于非常通用,在Keras 中提供了compile()和fit()函数方便实现上述逻辑。首先通过compile 函数指定网络使用的优化器对象、损失函数类型,评价指标等设定,这一步称为装配。例如:

# 导入优化器,损失函数模块
from tensorflow.keras import optimizers,losses
# 模型装配
# 采用Adam 优化器,学习率为0.01;采用交叉熵损失函数,包含Softmax
network.compile(optimizer=optimizers.Adam(lr=0.01),
loss=losses.CategoricalCrossentropy(from_logits=True),
metrics=['accuracy'] # 设置测量指标为准确率
)

在compile()函数中指定的优化器、损失函数等参数也是我们自行训练时需要设置的参数,并没有什么特别之处,只不过Keras 将这部分常用逻辑内部实现了,提高开发效率。

模型训练

模型装配完成后,即可通过fit()函数送入待训练的数据集和验证用的数据集,这一步称为模型训练。例如:

# 指定训练集为train_db,验证集为val_db,训练5 个epochs,每2 个epoch 验证一次
# 返回训练轨迹信息保存在history 对象中
history = network.fit(train_db, epochs=5, validation_data=test_db,
validation_freq=2)

注:这里是train_db和test_db 是通过mnist手写数据集加载过来的下面是加载的代码

from tensorflow.keras import datasets
def preprocess(x, y):
    """
    预处理函数
    """
    # [b, 28, 28], [b]
    print(x.shape, y.shape)
    x = tf.cast(x, dtype=tf.float32) / 255.
    x = tf.reshape(x, [-1, 28 * 28])  # 将图片打平
    y = tf.cast(y, dtype=tf.int32)
    y = tf.one_hot(y, depth=10)
    return x, y


(x, y), (x_test, y_test) = datasets.mnist.load_data()  # 加载手写数据集数据
print('x:', x.shape, 'y:', y.shape, 'x test:', x_test.shape, 'y test:', y_test)

batchsz = 512
train_db = tf.data.Dataset.from_tensor_slices((x, y))  # 转化为Dataset对象
train_db = train_db.shuffle(1000)  # 随机打散
train_db = train_db.batch(batchsz)  # 批训练
train_db = train_db.map(preprocess)  # 数据预处理
train_db = train_db.repeat(20)  # 复制20份数据
test_db = tf.data.Dataset.from_tensor_slices((x_test, y_test))
test_db = test_db.shuffle(1000).batch(batchsz).map(preprocess)

fit()函数的运行代表了网络的训练过程,因此会消耗相当的训练时间,并在训练结束后才返回,训练中产生的历史数据可以通过返回值对象取得。可以看到通过compile&fit 方式实现的代码非常简洁和高效,大大缩减了开发时间。但是因为接口非常高层,灵活性也降低了,是否使用需要用户自行判断。

模型测试

Model 基类除了可以便捷地完成网络的装配与训练、验证,还可以非常方便的预测和测试。关于验证和测试的区别,我们会在过拟合一章详细阐述,此处可以将验证和测试理解为模型评估的一种方式。
通过 Model.predict(x)方法即可完成模型的预测,例如:

# 加载一个batch 的测试数据
x,y = next(iter(db_test))
print('predict x:', x.shape) # 打印当前batch 的形状
out = network.predict(x) # 模型预测,预测结果保存在out 中

其中out 即为网络的输出。通过上述代码即可使用训练好的模型去预测新样本的标签信息。

如果只是简单的测试模型的性能,可以通过Model.evaluate(db)循环测试完db 数据集上所有样本,并打印出性能指标,例如:

network.evaluate(db_test) # 模型测试,测试在db_test 上的性能表现

注:db_test 并不是之前加载的测试集,而是一组新的数据,也可以理解为实际运用的数据集

Tensorflow2.0 keras InceptionResNetV2代码实现 目录迁移学习自编代码定义卷积单元Stem模块InceptionRes A模块InceptionRes B模块InceptionRes C模块Reduction AReduction BBuild Inception-ResNet补充: 模型介绍请参看:博文 出处:Google AI 迁移学习 首先还是看看标准答案 import tensorflow as tf from tensorflow import keras base_model = keras.applications.Incept 阅读详情

相关推荐

tensorflow2.0 下keras模型的保存与加载

在前面的博文tensorflow2.0自制神经网络数据集及预测结果(混淆矩阵)可视化中,我们用了谷歌训练好的网络模型DesNet121来训练我们的图片,当用自己的电脑和自写的网络架构来训练图片时,我们需要及时的保存我们训练好的网络,以便以后测试或者接着训练。现在网上有很多的博客介绍了在keras框架下如何保存和加载训练好的模型,在此我做一个总结吧,也方便我以后查看,不用到处去别的地方找了。 我将DesNet网络换为自己的resnet18以后开始训练,训练结束后在代码的最后加了一行 model.save('m

woshinierye的博客 1800

pytorch基础(九)- 自定义数据集训练模型 和 迁移学习

目录Pokemon Dataset数据集加载自定义数据集数据预处理图像数据存储结构代码构建模型训练模型迁移学习 收集、读取、预处理数据,模型搭建、训练。 Pokemon Dataset 数据集加载 自定义数据集 __len__()函数返回数据集的数量,限制数据集迭代次数; __getitem__索引样本; import torch from torch.utils.data import Dataset class NumberDataset(Dataset): def __init_

sherryhwang的博客 1559

Tensorflow2.0 keras MobileNetV2 代码实现

目录迁移学习自编程序BlockDepthwise Separable block参考 网络介绍请参看:博文 keras搭建深度学习模型的若干方法:博文 直接上网络结构 迁移学习 依旧看看标准答案 import tensorflow as tf from tensorflow import keras base_model = keras.applications.MobileNetV2(weights='imagenet') base_model.summary() 自编程序 Block

Forrest97的博客 4449

【人工智能】实验二基于CNN的图像分类

实验主要分为四个步骤: load datasets build network train test 构建的网络模型VGG13 一共13层 俺们老师给的待完善的代码如下,需要自己填写带下划线的部分 import tensorflow as tf from tensorflow.keras import layers, optimizers, datasets, Sequential import os os.environ['TF_CPP_MIN_LOG_LEVEL']=.

二琳爱吃肉的博客 2994

tensorflow2.0(一)tf.keras

tensorflow 2.0 tensorflow和keras及tf.keras的区别 API:API,全称Application Programming Interface,即应用程序编程接口。API是一些预定义函数,目的是用来提供应用程序与开发人员基于某软件或者硬件得以访问一组例程的能力,并且无需访问源码或无需理解内部工作机制细节。 tensorflow是Google开源的基于数据流图的机器学...

longlong068的博客 2374

从S参数矩阵到硬件实现:手把手教你用耦合微带线设计Marchand巴伦

本文详细介绍了使用耦合微带线设计Marchand巴伦的完整流程。从奇偶模理论和S参数矩阵分析入手,结合ADS仿真软件进行参数优化与电磁仿真验证,最终指导PCB布局、制作与实测调试。文章以2.4GHz Wi-Fi前端电路为例,手把手演示了从理论计算到硬件实现的全过程,并分享了关键的工程经验与调试技巧。

weixin_29271263的博客 537

TensorFlow:模型装配、训练与测试

在训练网络时,一般的流程是通过前向计算获得网络的输出值,再通过损失函数计算网络误差,然后通过自动求导工具计算梯度并更新,同时间隔性地测试网络的性能。对于这种常用的训练逻辑,可以直接通过Keras 提供的模型装配与训练高层接口实现,简洁清晰。 文章目录一、模型装配二、模型匹配三、模型测试 一、模型装配 在 Keras 中,有2 个比较特殊的类:keras.Model 和keras.layers.La...

南淮北安的博客 1136

MSTAR数据集下载地址及处理方法

首先感谢博主冯子材提供下载的百度网盘地址。 在这里为了防止侵权,特此鸣谢,并给出其博客地址。 地址中有MSTAR百度网盘下载地址和需要使用的数据介绍,其中百度网盘中有数据转换工具 https://blog.csdn.net/taifengzikai/article/details/80600355 工具使用 因为下载得到的数据是二进制文件,需要使用官方提供的工具进行转换,可将其转换为jpeg。 有...

KamenRider 1万+

tensorflow 数据加载

数据载入的三种形式: 一、直接使用numpy加载 for i in range(train_data.shape[0]//batch_size): image_batch = train_data[i*batch_size:(i+1)*batch_size,:,:,np.newaxis] label_batch = train_label[i * batch_size:(i + 1) * batch_size] 二、使用tf.data.Dat

qq_29507011的博客 603

024、反激变换器的短路保护设计

本文详细探讨了反激变换器短路保护的设计要点与实践经验。作者通过实际案例分析了短路时反激拓扑的电流特性,指出初级峰值电流限制是最基础的保护手段,但需配合打嗝模式使用。文章重点剖析了打嗝模式设计的三个关键陷阱:频率设定、退出条件和软启动衔接。同时强调次级侧辅助保护、变压器参数优化、环路响应协调的重要性,并比较了自恢复与锁死方案的适用场景。最后提出实测验证的四个关键点和设计经验:不盲信芯片手册、保护电路独立设计、充分留有余量、进行破坏性测试。全文以工程实践为导向,为反激电源的可靠短路保护提供了系统性解决方案。

Jack010169的博客 244

第42篇FEDGLOSS算法BEYOND LOCAL SHARPNESS:COMMUNICATION-EFFICIENT GLOBALSHARPNESS-AWARE MINIMIZATIONFOR

:用上一轮伪梯度最小化锐度,获取与全局损失最相关的几何信息,引导全局优化趋向更平坦的最小值。效果对比分析:FEDGLOss。

weixin_74009895的博客 526

tf.train.shuffle_batch函数解析

tf.train.shuffle_batch(tensor_list, batch_size, capacity, min_after_dequeue, num_threads=1, seed=None, enqueue_many=False, shapes=None, name=None) 原创文章,请勿转载哦~!!觉得有用的话,欢迎一起讨论相互学习~Follow MeCreates batche

泛用演化计算、通用人工智能优化模型 2万+

【软考】系统集成项目管理工程师(一)信息化知识

软考中级——系统集成项目管理工程师备考干货第一章:信息化知识。

商务合作 | 共同学习 | 携手共进 9万+

【TensorFlow2.0】keras高层接口之经典数据集加载、网络层、网络容器、模型装配、模型训练、模型测试、模型保存和加载

  keras是一个主要由Python语言开发的开源神经网络计算库,被设计为高度模块化和易扩展的高层神经网络接口,使用户不需要过多的专业知识就可以简洁、快速地完成模型的搭建与训练。Keras库分为前端和后端,其中后端是调用现有的神经网络学习框架实现底层运算,如theano、CNTK、tensorflow等,前端接口是Keras抽象过的一组统一接口函数。   Keras与tensorflow的关系:...

qq_36926037的博客 977

AI原生SaaS应用的自动化运维体系构建

随着ChatGPT掀起的AI原生应用浪潮,越来越多SaaS(软件即服务)产品开始以"AI优先"的方式设计——从用户交互到核心功能,都深度依赖机器学习模型(如推荐算法、智能客服)、实时数据流(如用户行为分析)和弹性算力(如大模型推理)。这类应用的运维需求与传统SaaS完全不同:传统运维像"修水管",哪里漏了补哪里;AI原生运维则像"照顾会成长的宠物",需要实时感知模型状态、数据变化和流量波动,主动调整资源。

AI天才研究院 1080

大数据面试必考题:Spark数据倾斜问题总结和优化措施

在Spark分布式计算环境中,

大模型大数据攻城狮的专栏 1466

tf2.0真正有用的——Keras高层接口

前边介绍了TensorFlow的基本操作: tf2.0学习(一)——基础知识 tf2.0学习(二)——进阶知识 tf2.0学习(三)——神经网络 tf2.0学习(四)——反向传播算法 下面介绍一个高度模块化、易扩展的高层接口Keras。 tf2.0学习(五)——Keras高层接口5.0 简介5.1 常见功能模块5.1.1 常见网络层5.1.2 网络容器5.2 模型装配、训练与测试5.2.1 模型装配5.2.2 模型训练5.2.3 模型测试5.3 模型的保存与加载5.3.1 张量方式5.3.2 网络方式5.3

weixin_40935425的博客 907

垂类大模型 研发方向与具体方案调研

领域知识库加上通用大模型,针对通用大模型见过的知识比较少的问题,利用向量数据库等方式根据问题在领域知识库中找到相关内容,再利用通用大模型强大的summarization和qa的能力生成回复,完成本次垂直大模型研发。目前很多企业希望将大模型的能力应用到企业内部当中,但很多通用大模型只是一个预训练模型,其所能回答的知识主要来源于互联网上公开的通用知识库,对于部分垂直领域和企业内部的私有知识库的问答,给出的回答。:垂类大模型的效果与底座性能息息相关,研发垂类大模型第一步就是确定开源大模型解决方案。

风吹落叶的博客 3329

TensorFlow2.0教程-keras模型保存和序列化

TensorFlow2教程-keras模型保存和序列化 1.保持序列模型和函数模型 # 构建一个简单的模型并训练 from __future__ import absolute_import, division, print_function import tensorflow as tf tf.keras.backend.clear_session() from tensorflow impor...

知行_那片天 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

TensorFlow2.0教程-keras 函数api

TensorFlow2.0教程-keras 函数api 完整tensorflow2.0教程代码请看tensorflow2,0:中文教程tensorflow2_tutorials_chinese(欢迎star) # !pip install pydot #!sudo apt-get install graphvizf from __future__ import absolute_import, ...

知行_那片天 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

最简单的方法—tensorflow 2.0 keras 保存 .pb 格式的模型

我们知道在tensorflow 2.0中利用 tensorflow.keras可以很方便地保存和加载 .h5 模型,但是 .h5格式的模型只适合在本地使用,不适合部署。tensorflow serving 提供了很强大的部署功能,但是仅支持 .pb 格式,关于 .pb 格式的好处请参考:TensorFlow 保存模型为 PB 文件。本文说明如何用最简单的方法利用 tensorflow.keras ...

u012995500的博客 2万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

TensorFlow2.0教程-使用keras训练模型

TensorFlow2.0教程-使用keras训练模型 完整tensorflow2.0教程代码请看tensorflow2,0:中文教程tensorflow2_tutorials_chinese(欢迎star) # !pip install -q pydot # !apt-get install graphviz from __future__ import absolute_import, di...

知行_那片天 1万+

TensorFlow2.0 学习笔记(六):TensorFlow2.0 和 Keras 的纠葛

专栏——TensorFlow学习笔记 文章目录专栏——TensorFlow学习笔记一、TensorFlow 2.0 和 Keras 的关系二、Keras Sequential/Functional API 模式建立模型三、使用 Keras Model 方法训练和评估模型参考文章 一、TensorFlow 2.0 和 Keras 的关系 如果你学过 Keras 的话,就会发现上面的实例中均使用了 S...

种树最好的时间是10年前,其次是现在!!! 7840

【Tensorflow2.0】4、Tensorflow2.0+Keras_快速入门教程

本文是学习keras作者关于tensorflow2.0的教程 全部代码参见我的github #安装tensorflow !pip install tensorflow==2.0.0 import tensorflow as tf print(tf.__version__) 2.0.0 Tensorflow2.0+Keras综述 作者:fchollet,2019年10月 本文是关于Tenso...

dddeee的专栏 3971

掌声送给TensorFlow 2.0!用Keras搭建一个CNN | 入门教程

作者 | Himanshu Rawlani 译者 | Monanfei,责编 | 琥珀 出品 | AI科技大本营(id:rgznai100) 2019 年 3 月 6 日,谷歌在 TensorFlow 开发者年度峰会上发布了最新版的 TensorFlow 框架 TensorFlow2.0 。新版本对 TensorFlow 的使用方式进行了重大改进,使其更加灵活和更具人性化。具体的改...

AI科技大本营 1万+

tensorflow2.4.0对应得keras版本是什么

TensorFlow 2.4.0 是 TensorFlow 2.x 系列的一个重要版本,它带来了许多性能优化和新功能。这个版本进一步简化了 API,提高了模型训练和推理的效率。如果你正在使用 TensorFlow 2.4.0,那么你可能已经体验到了这些改进。

yjq125931902的博客 1345
上一篇: Tensorflow2.0 Keras高级接口之Sequential网络容器
下一篇: Tensorflo2.0 Keras高级接口之模型的保存和加载
AndSonder
博客等级 码龄7年 364粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值