基于Tensorflow2 和Keras的模型构建及训练过程的几种写法

【目标检测】使用Retinanet训练自己的数据集——Keras版本 文章目录 Retinanet 较之 SSD, YOLO系one stage目标检测网络,在保证检测速度的基础上,很大的提高了在样本类别分布不平衡情况下的检测精度,这得益于He Kaiming等人所提出的Focal Loss Paper可见 Focal Loss for Dense Object Detection 由于在工作或一些特定场景中,我们的数据很大可能不会像COCO, Pascal... 阅读详情

基于Tensorflow2 和Keras的模型构建及训练过程的几种写法

针对深度神经网络,Tensorflow2和Keras提供了丰富的API来构建和训练模型。

本文尝试使用多种方法来构建模型、训练模型。

1. 加载Tensorflow

这里加载了tensorflow和time库,其中tensorflow版本为2.0+。

import tensorflow as tf
import time

2. 加载数据

本文使用CIFAR10数据库来进行实验,并通过tensorflow来加载数据。

其中数据的shape为(None, 32, 32, 3),(None, 1, 1)。

在训练前,需要对数据进行预处理,主要包括:

  • 图像归一化
  • 标签reshape为(None, 1)
  • 标签onehot编码
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.cifar10.load_data()

train_images, test_images = train_images / 255.0, test_images / 255.0

train_labels = tf.reshape(train_labels, shape=[train_labels.shape[0]])
test_labels = tf.reshape(test_labels, shape=[test_labels.shape[0]])
train_labels, test_labels = tf.one_hot(train_labels, depth=10), tf.one_hot(test_labels, depth=10)

预处理完后,构建Dataset示例,方便后期训练。

train_dataset = tf.data.Dataset.from_tensor_slices((train_images, train_labels))
train_dataset = train_dataset.shuffle(buffer_size=1024).batch(64)

test_dataset = tf.data.Dataset.from_tensor_slices((test_images, test_labels))
test_dataset = test_dataset.shuffle(buffer_size=1024).batch(64)

3. 构建模型

本文使用一个简单的ResNet结构的模型来进行实验。其中,模型共包括2个Residual Block。具体的模型结构见代码。

下面尝试使用多种方法来构建模型,如:

  • 函数式API
  • 子类化模型
  • 序列化模型

实际应用中,根据具体场景选取合适的构建方式即可。

3.1 函数式API

inputs = tf.keras.Input(shape=(32, 32, 3))
x = tf.keras.layers.Conv2D(32, 3, padding='same', activation='relu')(inputs)
x = tf.keras.layers.MaxPooling2D()(x)

temp = x
for filter in [64, 128]:
    x = tf.keras.layers.Conv2D(filter, 3, padding='same')(x)
    x = tf.keras.layers.BatchNormalization()(x)
    x = tf.keras.layers.ReLU()(x)
    
	x = tf.keras.layers.Conv2D(filter, 3, padding='same')(x)
    x = tf.keras.layers.BatchNormalization()(x)
    
    res = tf.keras.layers.Conv2D(filter, 1)(temp)
    x = tf.keras.layers.add([x, res])
    
    x = tf.keras.layers.ReLU()(x)
    x = tf.keras.layers.MaxPooling2D()(x)
    
    temp = x

x = tf.keras.layers.GlobalAvgPool2D()(x)
x = tf.keras.layers.Dense(128)(x)
outpu
keras_retinanet 目标检测——自定义图片数据集的模型训练步骤 最近在学习 keras_retinanet ,下面就记录下用自己的数据集进行的模型训练。 大致分为以下几步: 自定义训练数据 图片目标标注 生成用于训练的图片名称、目标标注位置及目标类别的.csv文件 开始训练模型(注意参数调整) 转换训练好的模型 用转换后的模型进行目标检测 下面就一步一步介绍吧: 目录 1.下载包,安装环境。 2.准备数据集 3.训练模型 4.目标检测 ... 阅读详情

相关推荐

TensorFlow 篇 | TensorFlow 2.x 基于 Keras 的模型构建

「导语」TensorFlow 2.0 版发布以来,Keras 已经被深度集成于 TensorFlow 框架中,Keras API 也成为了构建深度网络模型的第一选择。使用 Keras 进行模型开发与迭代是每一个数据开发人员都需要掌握的一项基本技能,让我们一起走进 Keras 的世界一探究竟。 Keras 介绍 Keras 是一个用 Python 编写的高级神经网络 API ,它是一个独立的库,能够以 TensorFlow , CNTK 或者 Theano 作为后端运行。 TensorFlow 从 ..

AlexanderJLiu的博客 2041

TensorFlow从入门到实践:TensorFlow入门-构建和训练神经网络模型

本文介绍了使用TensorFlow构建和训练神经网络的基本流程。首先概述了TensorFlow的核心优势,包括数据流图架构、多硬件支持及丰富的API生态。然后详细演示了从安装TensorFlow到构建CNN模型的完整过程,包括数据预处理(MNIST数据集加载、归一化和one-hot编码)、模型搭建(使用Keras Sequential API创建卷积层、池化层和全连接层)以及模型训练与评估。最后通过5个epoch的训练,在测试集上达到了98.6%的准确率,展示了TensorFlow在深度学习中的高效性和易用

WSSWWWSSW的博客 1028

Tensorflow 2.x(keras)源码详解之第九章:模型训练和预测的三种方法(fit&tf.GradientTape&train_step&tf.data)

文章目录1. 模型训练和预测步骤2. 使用内置方法fit进行训练和评估2.1 简单案例解析2.2 compile编译2.3 处理非标准化的损失和评估指标:add_loss&add_metric2.4 自动切分验证集2.5 使用tf.data数据进行训练2.6 使用tf.keras.utils.Sequence数据进行训练2.7 多输出,指定不同的损失函数和评估指标2.8 样本不均衡:类权重和样本权重2.9 使用回调(callbacks)2.10 学习率衰减3. 从头开始编写循环训练3.1 fit源码

weixin_43178406的博客 6万+

tensorflow2.0系列-6 基于keras构建CNN图像识别模型【tensorflow2.0实战教程 图像识别模型代码】

【AI算法推荐】:tensorflow2.0建模教程系列 【导读】 在tensorflow2.0建模系列教程中,前四节我们用代码演绎了: 系列1:如何用tf2.0进行自定义层网络的设计(add.weight) 系列2:如何用tf2.0进行自定义模型的设计(Model) 系列3:如何用tf2.0实现loss函数和参数调优(loss gradient optimizer) 系列4:.如何用tf2.0...

AI工匠Book 4709

使用Keras和TensorFlow构建LSTM预测模型

损失函数(Loss Function),又称为代价函数或目标函数,在机器学习和深度学习中,是用来评估模型的预测值与真实值之间的差异程度的一种函数。它提供了一种量化模型表现的方法,是训练过程中模型优化的核心依据。在模型训练过程中,损失函数的计算结果会反馈给优化器,优化器根据损失函数的梯度进行参数更新,目的是最小化损失函数值。损失函数值越低,通常意味着模型的预测效果越好,对数据的拟合程度越高。

weixin_35364187的博客 1183

Halcon 简单的形状匹配定位与区域跟随

【代码】Halcon简单的形状匹配定位与区域跟随。

唐大狗 2806

从工艺到器件:用Silvaco ATLAS仿真PIN二极管击穿电压的保姆级指南

本文详细介绍了使用Silvaco ATLAS仿真PIN二极管击穿电压的全流程指南,从工艺仿真基础搭建到器件结构构建,再到击穿特性仿真和结果分析。通过Silvaco工具链,工程师可以在设计阶段精准预测器件性能,优化击穿电压,提升研发效率。

weixin_34259816的博客 355

KNX实战—ETS5_智能开关从零到一的配置全流程

本文详细介绍了使用ETS5软件配置KNX智能开关的完整流程。从创建项目、构建建筑结构,到导入产品数据库、添加并配置开关模块与智能面板,再到设置延时开关、闪烁报警等进阶功能,并深入解析了群组地址的配置与链接方法。最后指导完成项目校验与程序下载,帮助用户实现从零到一的智能灯光基础控制功能配置。

joy55的博客 541

ROS2与Gazebo协同实现多机器人避障仿真

本文详细介绍了如何利用ROS2与Gazebo协同搭建多机器人避障仿真环境。通过创建SDF机器人模型、编写多机器人启动文件以及集成基础避障算法,构建了一个低成本、高效率的虚拟测试平台,为AGV编队、机器人集群等项目的算法验证与迭代提供了完整解决方案。

weixin_29065659的博客 295

31、双相不锈钢直齿轮加工与性能研究及人工神经网络在焊接中的应用

本文研究了双相不锈钢直齿轮在不同加工方法(WEDM与滚齿加工)下的磨损行为,分析了表面粗糙度、齿厚变化、磨损率及润滑性能随转速的变化规律,并对比了两种工艺的优劣。同时,探讨了人工神经网络(ANN)在AA7050铝合金搅拌摩擦焊中的应用,通过建立工艺参数与焊接质量之间的预测模型,实现了对焊缝硬度和峰值温度的准确预测。研究为高性能齿轮制造和铝合金焊接提供了理论支持和技术参考,并提出了未来在润滑优化、加工工艺改进及智能控制方面的研究方向。

ggg99的专栏 150

2026年全国青少年信息素养大赛复赛真题(算法应用主题赛C++初中组:带解析)(7月4日试卷一)【文末附答案和解析】

2026年全国青少年信息素养大赛复赛真题(算法应用主题赛C++初中组:带解析)(7月4日试卷一)【文末附答案和解析】

王老师青少年编程 1737

解决QT5调用软键盘qvirtualkeyboard时崩溃问题ime_pinyin::MatrixSearch::init_user_dictionary

但是偶尔也会出现问题,譬如,我这边在Arm系统上跑着程序的时候,点击用户编辑框,输入法弹出,但是再次点击密码输入框,连程序都给我崩溃了。只是提示错误:void ime_pinyin::MatrixSearch::init_user_dictionary。首先确保你的Arm版QT库已经编译了软键盘,位置有时候就和lib同级目录,qtvirtualkeyboard。QT5中的软键盘qvirtualkeyboard很好用,很多人开发嵌入式端应用的时候都会用到。此外还有很多其他的输入法字典,像。

有问题或资源连接有缺失的可以私信公众号新潮看世界获取 2069

符合DO-178C和DO-331的机载软件研制体系

DO-178C的核心要求软件开发生命周期:DO-178C定义了软件开发的生命周期过程,包括需求获取、设计、实现、验证和确认等。它为机载软件开发提供了一套系统化的指导,确保在开发过程中考虑安全性和可靠性。安全等级(DAL):根据系统的重要性,DO-178C将软件划分为不同的开发保障等级(DAL A到E),DAL A的要求最为严格,适用于关键安全功能,而DAL E的要求较低,适用于非关键功能。DO-178C在非基于模型软件开发中的应用。

qq_41854911的博客 980

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: 区分Batch Normalization、Layer Normalization、Instance Normalization、Group Normalization
下一篇: 操作系统八股文01-概述
今生有幸.~
博客等级 码龄9年 26粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值