当前位置: 首页 > article >正文

详解Keras3.0 Models API: Model class

1、语法

keras.Model()

将不同层组为具有训练/推理特征的对象的模型 

2、示例一

inputs = keras.Input(shape=(37,))
x = keras.layers.Dense(32, activation="relu")(inputs)
outputs = keras.layers.Dense(5, activation="softmax")(x)
model = keras.Model(inputs=inputs, outputs=outputs)

inputs = keras.Input(shape=(37,))keras.Input函数用于创建一个输入张量,其中shape=(37,)表示输入张量的形状为一个长度为37的一维向量。

x = keras.layers.Dense(32, activation="relu")(inputs),定义一个全连接层(也称为密集层),名为x。该层的神经元数量为32,激活函数为ReLU(Rectified Linear Unit)。通过将inputs作为输入传递给Dense层,可以将输入数据传递到该层进行处 

outputs = keras.layers.Dense(5, activation="softmax")(x),定义了另一个全连接层,名为outputs。与上一层不同,该层的神经元数量为5,激活函数为Softmax。Softmax函数通常用于多分类问题的最后一层,它将输出转换为概率分布,使得每个类别的概率之和为1

model = keras.Model(inputs=inputs, outputs=outputs),将inputsoutputs分别指定为模型的输入和输出,可以构建一个完整的神经网络模型

3、示例二

#定义了一个输入张量,形状为 (None, None, 3),其中 None 表示该维度可以是任意大小。这个输入张量代表了一个具有任意尺寸和通道数的图像数据
inputs = keras.Input(shape=(None, None, 3))

#使用 RandomCrop 层来随机裁剪输入图像。它将输入图像裁剪为宽度为 128、高度为 128 的区域。裁剪后的图像作为下一层的输入
processed = keras.layers.RandomCrop(width=128, height=128)(inputs)

#使用卷积层(Conv2D)来处理经过随机裁剪后的图像。卷积层的参数包括过滤器数量(filters=32)和卷积核的大小(kernel_size=3)。卷积层将学习从输入图像中提取特征
conv = keras.layers.Conv2D(filters=32, kernel_size=3)(processed)

#使用全局平均池化层(GlobalAveragePooling2D),用于将卷积层的输出进行降维。全局平均池化层将每个特征图的像素值求平均,得到一个一维向量,从而减少模型的参数数量并降低计算复杂度
pooling = keras.layers.GlobalAveragePooling2D()(conv)

#使用全连接层(Dense),将全局平均池化层的输出映射到一个具有 10 个神经元的特征向量。全连接层可以学习从输入特征中提取更复杂的特征表示
feature = keras.layers.Dense(10)(pooling)

#创建一个名为 full_model 的完整模型,它接受输入张量 inputs 并输出特征向量 feature。通过调用 keras.Model 函数,我们可以将输入和输出层连接起来,形成一个可训练的模型
full_model = keras.Model(inputs, feature)

#创建一个名为 backbone 的模型,它接受经过随机裁剪后的图像作为输入,并输出经过卷积层处理后的特征图。这个模型可以用作其他模型的骨干网络,提取出有用的特征表示
backbone = keras.Model(processed, conv)

#创建一个名为 activations 的模型,它接受经过卷积层处理后的特征图作为输入,并输出经过全局平均池化层处理后的特征向量。这个模型可以用于可视化卷积层的激活情况,帮助我们理解模型在提取特征时的行为
activations = keras.Model(conv, feature) 

inputs = keras.Input(shape=(None, None, 3)),定义了一个输入张量,形状为 (None, None, 3),其中 None 表示该维度可以是任意大小。这个输入张量代表了一个具有任意尺寸和通道数的图像数据

processed = keras.layers.RandomCrop(width=128, height=128)(inputs),使用 RandomCrop 层来随机裁剪输入图像。它将输入图像裁剪为宽度为 128、高度为 128 的区域。裁剪后的图像作为下一层的输入

conv = keras.layers.Conv2D(filters=32, kernel_size=3)(processed),使用卷积层(Conv2D)来处理经过随机裁剪后的图像。卷积层的参数包括过滤器数量(filters=32)和卷积核的大小(kernel_size=3)。卷积层将学习从输入图像中提取特征

pooling = keras.layers.GlobalAveragePooling2D()(conv),使用全局平均池化层(GlobalAveragePooling2D),用于将卷积层的输出进行降维。全局平均池化层将每个特征图的像素值求平均,得到一个一维向量,从而减少模型的参数数量并降低计算复杂度

feature = keras.layers.Dense(10)(pooling),使用全连接层(Dense),将全局平均池化层的输出映射到一个具有 10 个神经元的特征向量。全连接层可以学习从输入特征中提取更复杂的特征表示

full_model = keras.Model(inputs, feature),创建一个名为 full_model 的完整模型,它接受输入张量 inputs 并输出特征向量 feature。通过调用 keras.Model 函数,我们可以将输入和输出层连接起来,形成一个可训练的模型

backbone = keras.Model(processed, conv),创建一个名为 backbone 的模型,它接受经过随机裁剪后的图像作为输入,并输出经过卷积层处理后的特征图。这个模型可以用作其他模型的骨干网络,提取出有用的特征表示

activations = keras.Model(conv, feature) ,创建一个名为 activations 的模型,它接受经过卷积层处理后的特征图作为输入,并输出经过全局平均池化层处理后的特征向量。这个模型可以用于可视化卷积层的激活情况,帮助我们理解模型在提取特征时的行为


http://www.kler.cn/a/163166.html

相关文章:

  • DAY6 线程
  • LLM - 使用 LLaMA-Factory 微调大模型 Qwen2-VL SFT(LoRA) 图像数据集 教程 (2)
  • 国标GB28181视频平台EasyCVR私有化部署视频平台对接监控录像机NVR时,录像机“资源不足”是什么原因?
  • 番外:MySQL的一些事务处理
  • 基于Python的膳食健康系统
  • TCP可靠连接的建立和释放,TCP报文段的格式,UDP简单介绍
  • Linux gtest单元测试
  • 基于Java医院挂号管理系统
  • sql2005日志文件过大如何清理
  • C/C++,优化算法——双离子推销员问题(Bitonic Travelling Salesman Problem)的计算方法与源代码
  • 二分查找|前缀和|滑动窗口|2302:统计得分小于 K 的子数组数目
  • linux常用命令-pip命令详解(超详细)
  • 判断css文字发生了截断,增加悬浮提示
  • 一. 初识数据结构和算法
  • StoneDB-8.0-V2.2.0 企业版正式发布!性能优化,稳定性提升,持续公测中!
  • 十七、FreeRTOS之FreeRTOS事件标志组
  • 麒麟系统进入救援模式或者是crtl D界面排查方法
  • Linux下通过find找文件---通过修改时间查找(-mtime)
  • 网络工程师【目录】
  • Python 潮流周刊#29:Rust 会比 Python 慢?!
  • 初识人工智能,一文读懂人工智能概论(1)
  • win10 笔记本卡顿优化
  • 二叉树的遍历之迭代遍历
  • 文献计量学方法与应用、主题确定、检索与数据采集、VOSviewer可视化绘图、Citespace可视化绘图、R语言文献计量学绘图分析
  • Python嗅探和解析网络数据包
  • 线性回归模型标准公式