查看TensorFlow已训模型的结构和网络参数

文章目录

    • 概要
    • 流程

概要

通过以下实例,你将学会如何查看神经网络结构并打印出训练参数。

流程

  • 准备一个简易的二分类数据集,并编写一个单层的神经网络
train_data = np.array([[1, 2, 3, 4, 5], [7, 7, 2, 4, 10], [1, 9, 3, 6, 5], [6, 7, 8, 9, 10]])train_label = np.array([1, 0, 1, 0])  #标签与样本一一对齐""" 定义一个单层的神经网络 """
model = tf.keras.models.Sequential([tf.keras.layers.Dense(1, activation=None)
])
  • 编译,训练,并保存模型
model.compile(loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),optimizer='adam'
)
model.fit(train_data,train_label,epochs=2750)tf.saved_model.save(model, "model_dir")  #保存到当前目录中,目录名为model_dir
  • 模型保存形式

模型节点和矩阵参数集中保存在 .data-00000-of-00001和 .index文件中,利用这两个文件中创建CheckpointReader对象。

  • 利用模型的Checkpoint对象查看模型结构和参数

Checkpoint对象存储了模型中所有可tracable追踪的对象,并记录保存着这些对象的参数及名称。可通过 tf.train.load_checkpoint()方法获得一个CheckpointReader对象,该对象可以读取Checkpoint内的所有信息。

"""  最后的variables是.data-00000-of-00001和 .index文件去掉后缀后的表达形式,从而统一代表着这两个文件"""
save_path = './model_dir/variables/variables'  # reader = tf.train.load_checkpoint(save_path)  # 得到CheckpointReader"""  打印Checkpoint中存储的所有参数名和参数shape """
for variable_name, variable_shape in reader.get_variable_to_shape_map().items():print(f'{variable_name} : {variable_shape}')
optimizer/_variables/2/.ATTRIBUTES/VARIABLE_VALUE : [5, 1]
optimizer/_iterations/.ATTRIBUTES/VARIABLE_VALUE : []
_CHECKPOINTABLE_OBJECT_GRAPH : []
keras_api/metrics/0/count/.ATTRIBUTES/VARIABLE_VALUE : []
keras_api/metrics/0/total/.ATTRIBUTES/VARIABLE_VALUE : []
layer_with_weights-0/bias/.ATTRIBUTES/VARIABLE_VALUE : [1]
layer_with_weights-0/kernel/.ATTRIBUTES/VARIABLE_VALUE : [5, 1]
optimizer/_variables/1/.ATTRIBUTES/VARIABLE_VALUE : [5, 1]
optimizer/_learning_rate/.ATTRIBUTES/VARIABLE_VALUE : []
optimizer/_variables/3/.ATTRIBUTES/VARIABLE_VALUE : [1]
optimizer/_variables/4/.ATTRIBUTES/VARIABLE_VALUE : [1]

其中Dense层的权重参数和偏差bias的显示信息为,

layer_with_weights-0/bias/.ATTRIBUTES/VARIABLE_VALUE : [1]
layer_with_weights-0/kernel/.ATTRIBUTES/VARIABLE_VALUE : [5, 1]

接着利用刚刚打印出的参数名即可查看其参数值,

print(reader.get_tensor('layer_with_weights-0/kernel/.ATTRIBUTES/VARIABLE_VALUE'))
print(reader.get_tensor("layer_with_weights-0/bias/.ATTRIBUTES/VARIABLE_VALUE"))[[-1.7741445 ][-0.07314294][-0.07213379][ 1.1694099 ][-0.36803177]][1.7487208]

  • 验证
model = tf.saved_model.load('model_dir')
print(model([[1, 2, 3, 4, 5]]))
output = -1.7741445 - 2*0.07314294 - 3*0.07213379 + 4*1.1694099 - 5*0.36803177+1.7487208
print(output)tf.Tensor([[2.4493697]], shape=(1, 1), dtype=float32)2.4493698000000004

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

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

相关文章

ActiveMQ 07 集群配置

Active MQ 07 集群配置 官方文档 http://activemq.apache.org/clustering 主备集群 http://activemq.apache.org/masterslave.html Master Slave TypeRequirementsProsConsShared File System Master SlaveA shared file system such as a SANRun as many slaves as requ…

代理知识科普:为什么有的代理IP速度比较慢呢?

代理IP在跨境业务中被广泛的应用,今天我们将一同深入探讨一个问题:“为什么有的IP代理速度比较慢?”随着数字化时代的不断发展,代理服务成为了许多网络操作的关键环节。然而,有时我们可能会遇到IP代理速度慢的问题&…

在Windows 10中打开高级系统属性的几种方法,总有一种适合你

序言 高级系统属性允许你配置许多内容,从性能到用户配置文件,从启动到环境变量。虽然这些设置不一定需要更改,并且只有在他们对自己正在做的事情有很好的了解时才应该执行,但了解它们肯定会帮助你在需要时调节 Windows。 什么是…

pycharm 更换Eclipse 的按键模式 keymap

流程 整体来说比较简单,其实只要下载一个eclipse keymap插件就可以完成 首先 ctrl alt s 打开设置页面,找到 plugin 安装完成后还是在 settings 下切换到 keymap即可以看到eclipse 的按键设置出现了,应用后ok 即可完成 再去试试&#x…

2024最新在线工具箱网站系统源码

(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买!购买本专栏住如有什么源码需要,可向博主私信,第二天即可发布!博主有几万资源) 2024最新在线工具箱网站系统源码是一…

Semaphore信号量源码解读与使用

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java全栈-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 目录 1. 前言 2. 什么是Semaphore? 3. Semaphore源码解读 3.1 acquire…

如何安装flash-attn

flash-attn库安装记录_flash_attn-CSDN博客文章浏览阅读2.2k次,点赞11次,收藏14次。flash-attn库安装记录。安装好cuda11.7。让库找到cuda路径。_flash_attnhttps://blog.csdn.net/liaoqingjian/article/details/135624375?ops_request_misc%257B%2522r…

面试官:一个Java对象占用多大内存?

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&…

Ubuntu上安装Chrome浏览器

安装步骤 1.下载安装chrome安装包 wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb2.安装Chrome浏览器 sudo dpkg -i google-chrome-stable_current_amd64.debsudo apt-get -f install3.启动Chrome浏览器 查看收藏夹里的Chrome图标 单击C…

OpenHarmony实战开发-NAPI封装ArkTS接口案例。

介绍 部分应用的主要开发语言为C/C,但是HarmonyOS的部分接口仅以ArkTS的形式暴露,因此需要将ArkTS的接口封装为Native接口。本例以DocumentViewPicker的Select方法为例,提供了Napi封装ArkTS API的通用方法,本例包含内容如下&…

8个视频剪辑素材网,免费下载!

视频剪辑从业者应该去哪里找免费的剪辑素材?收藏好下面这8个网站,告别付费,永久免费。 免费视频素材 1、菜鸟图库 https://www.sucai999.com/video.html?vNTYwNDUx 菜鸟图库虽然是个设计素材网站,但除了设计类素材之外还有很多…

短视频素材在哪里可以找到?8个视频素材软件app免费

在这个视觉内容占据重要地位的时代,每一位视频创作者都需要从全球各种独特的资源中寻找灵感。以下精选的优质视频素材网站不仅能提供高质量的无水印视频素材,还能帮助你把握项目的视觉冲击力,使你的作品在众多内容中脱颖而出。 1. 蛙学府&…

Vue2:标签页一个页面拆分成俩个选项卡

概要 在自己的项目中,标签页组件显示一般就是点击一个页面,然后标签页组件显示该页面的名称。但是如果你是一个页面文件中展示不同的内容比如( 某模块的新增页面 和 详情页面)一般内容新建页面和详情页面差别不是很大,有的内容甚至俩边都会用…

【kubeEdge】离线部署

部署 kubeEdge 在线部署 在线方式部署直接执行以下命令,会联网下载需要的安装文件执行安装 $ keadm init --advertise-address{ip} --kubeedge-version{version} --kube-config{config_path}, 离线部署 离线准备工作 所有下载操作均在可以联网的机…

CSS3 新特性 box-shadow 阴影效果、圆角border-radius

圆角 使用CSS3 border-radius属性,你可以给任何元素制作"圆角",border-radius属性,可以使用以下规则: (1)四个值:第一个值为左上角,第二个值为右上角,第三个值…

Trigger触发器

触发器是指当满足预设的条件时去执行一些事务的工具,比如我们希望鼠标移到某个按钮上方时,这个按钮的颜色、大小发生一些改变。这个时候,条件是鼠标移到按钮上,执行的事务是改变按钮的颜色和大小。 触发器种类 触发器主要运用的场…

组织机构代码是哪几位?营业执照怎么看组织机构代码?

组织机构代码是哪几位? 组织机构代码通常指的是组织机构代码证上的一组特定数字,它用于唯一标识一个组织或机构。在中国,组织机构代码由9位数字组成,前8位是本体代码,最后1位是校验码。这组代码是按照国家有关标准编制的&#x…

GitHub repository - Pulse - Contributors - Network

GitHub repository - Pulse - Contributors - Network 1. Pulse2. Contributors3. NetworkReferences 1. Pulse 显示该仓库最近的活动信息。该仓库中的软件是无人问津,还是在火热地开发之中,从这里可以一目了然。 2. Contributors 显示对该仓库进行过…

Realsense D455 调试

1 Realsense D455 配置: RGB:彩色相机,FOV(h,v)( 90*65 )红外点阵发射:位于上图中RGB右边,发射特定模式的红外光,通常是一种点阵图案&#xff0c…

用Skimage学习数字图像处理(021):图像特征提取之线检测(下)

本节是特征提取之线检测的下篇,讨论基于Hough变换的线检测方法。首先简要介绍Hough变换的基本原理,然后重点介绍Skimage中含有的基于Hough变换的直线和圆形检测到实现。 目录 10.4 Hough变换 10.4.1 原理 10.4.2 实现 10.4 Hough变换 Hough变换&…