为什么 get_tensor_by_name 无法正确获取 tf.keras.layers 定义的层的权重

2024-05-08

我尝试获取由以下定义的层的权重tf.keras.layers通过使用get_tensor_by_name in tensorflow。代码如下

# encoding: utf-8
import tensorflow as tf

x = tf.placeholder(tf.float32, (None,3))
h = tf.keras.layers.dense(3)(x)
y = tf.keras.layers.dense(1)(h)

for tn in tf.trainable_variables():
    print(tn.name)

sess = tf.Session()
sess.run(tf.global_variables_initializer())
w = tf.get_default_graph().get_tensor_by_name("dense/kernel:0")
print(sess.run(w))

重量的名称是dense/kernel:0。然而,输出sess.run(w)很奇怪

[( 10,) ( 44,) ( 47,) (106,) (111,) ( 98,) ( 58,) (108,) (111,) ( 99,)
 ( 97,) (108,) (104,) (111,) (115,) (116,) ( 47,) (114,) (101,) 
 ... ]

这不是浮点数数组。事实上,如果我使用tf.layers.dense定义网络,一切顺利。所以我的问题是如何获得由以下定义的层的权重tf.keras.layers通过正确使用张量名称。


您可以使用get_weights()在图层上获取特定图层的权重值。这是您的案例的示例代码:

import tensorflow as tf

input_x = tf.placeholder(tf.float32, [None, 3], name='x')    
dense1 = tf.keras.Dense(3, activation='relu')
l1 = dense1(input_x)
dense2 = tf.keras.Dense(1)
y = dense2(l1)

weights = dense1.get_weights()

可以使用 Keras API 以更简单的方式完成此操作,如下所示:

def mymodel():
    i = Input(shape=(3, ))
    x = Dense(3, activation='relu')(i)
    o = Dense(1)(x)

    model = Model(input=i, output=o)
    return model


model = mymodel()

names = [weight.name for layer in model.layers for weight in layer.weights]
weights = model.get_weights()

for name, weight in zip(names, weights):
    print(name, weight.shape)

此示例获取模型每一层的权重矩阵。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 get_tensor_by_name 无法正确获取 tf.keras.layers 定义的层的权重 的相关文章

  • 错误 - AttributeError:“DirectoryIterator”对象在 keras 的自动编码器设计中没有属性“ndim”

    我是 Python 3 5 的新手 我正在尝试编写一个简单的自动编码器 它将在 60 张苹果图像的数据集上进行训练 并尝试重建根中给出的图像 我使用了以下代码 from keras layers import Input Dense fro
  • 用于分布式计算的 Tensorflow 设置

    任何人都可以提供有关如何设置张量流以在网络上的许多CPU上工作的指导吗 到目前为止 我发现的所有示例最多只使用一个本地盒子和多个 GPU 我发现我可以在 session opts 中传递目标列表 但我不确定如何在每个盒子上设置张量流来侦听网
  • 没有带有张量板的图表

    我正在读一本关于 Tensorflow 的书 我发现了这段代码 from future import absolute import from future import division from future import print
  • 从tensorflow_cc和tensorflow_framework生成静态库

    据我了解 使用 bazel 我只能生产libtensorflow cc so and libtensorflow framework so 我需要生产静态库与位置无关 fPIC 因为稍后我会将它们链接到我自己的动态库 I found 这个答
  • Tensorflow Hub - 获取模型的输入形状和问题域?

    我正在使用最新版本的tensorflow hub 想知道如何获取有关模型的预期输入形状以及模型属于什么类型的集合的信息 例如 有没有办法以这种方式在 Python 中加载模型后获取有关预期图像形状的信息 model hub load htt
  • 如何确定 Keras Conv2D 函数中的“filter”参数

    我刚刚开始我的 ML 之旅 并且已经完成了一些教程 对我而言 不清楚的一件事是如何为 Keras Conv2D 确定 过滤器 参数 我读过的大多数资料只是将参数设置为 32 没有任何解释 这只是经验法则还是输入图像的尺寸起作用 例如 CIF
  • 安装tensorflow的正确命令

    当尝试在 Anaconda 上安装 Tensorflow 时 我尝试了两种类型的命令 conda install tensorflow gpu工作得很好 然而 当尝试conda install c anaconda tensorflow g
  • 在 Tensorflow 对象检测 API 中绘制验证损失

    我正在使用 Tensorflow 对象检测 API 来检测和定位图像中的一类对象 为了这些目的 我使用预先训练的faster rcnn resnet50 coco 2018 01 28 model 我想在训练模型后检测拟合不足 过度拟合 我
  • 张量流和线程

    下面是来自 Tensorflow 网站的简单 mnist 教程 即单层 softmax 我尝试通过多线程训练步骤对其进行扩展 from tensorflow examples tutorials mnist import input dat
  • Tensorflow 不分配完整的 GPU 内存

    Tensorflow 默认分配所有 GPU 内存 但我的新设置实际上只有 9588 MiB 11264 MiB 我预计大约 11 000MiB 就像我的旧设置一样 张量流信息在这里 from tensorflow python client
  • 如何在Tensorflow中保存估计器以供以后使用?

    我按照教程 TF Layers 指南 构建卷积神经网络 以下是代码 https github com tensorflow tensorflow blob r1 1 tensorflow examples tutorials layers
  • 可视化 TFLite 图并获取特定节点的中间值?

    我想知道是否有办法知道 tflite 中特定节点的输入和输出列表 我知道我可以获得输入 输出详细信息 但这不允许我重建发生在Interpreter 所以我要做的是 interpreter tf lite Interpreter model
  • Tensorflow中通过字符串选择不同的模式

    我正在尝试构建一个 VAE 网络 我希望模型在不同的模式下做不同的事情 我有三种模式 训练 相同 和 不同 以及一个名为 interpolation mode 的函数 它根据模式执行不同的操作 我的代码如下所示 import tensorf
  • TensorFlow:在训练时更改变量

    如果我将输入管道从 feed dict 更改为 tf data dataset 如何在每次迭代后的训练期间更改网络内参数的值 澄清一下 旧代码看起来像这样 Define Training Step model is some class t
  • 如何将 tf.contrib.seq2seq.Helper 用于非嵌入数据?

    我正在尝试使用 tf contrib seq2seq 模块对某些数据 仅 float32 向量 进行预测 但我使用 TensorFlow 中的 seq2seq 模块找到的所有示例都用于翻译 因此用于嵌入 我正在努力准确理解 tf contr
  • Keras:多类 NLP 任务中 model.evaluate 与 model.predict 的准确性差异

    我正在使用以下代码在 keras 中为 NLP 任务训练一个简单模型 训练集 测试集和验证集的变量名称是不言自明的 该数据集有 19 个类 因此网络的最后一层有 19 个输出 标签也是 one hot 编码的 nb classes 19 m
  • 如何将神经网络的输出限制在特定范围内?

    我正在使用 Keras 进行回归任务 并希望将输出限制在一个范围内 例如 1 到 10 之间 有没有办法保证这一点 像这样编写自定义激活函数 a simple custom activation from keras import back
  • 如何使用一个模型中间层的输出作为另一个模型的输入?

    我训练一个模型A并尝试使用中间层的输出name layer x 作为模型的附加输入B 我尝试像 Keras 文档一样使用中间层的输出https keras io getting started faq how can i obtain th
  • Keras model.predict 函数给出输入形状错误

    我已经在 Tensorflow 中实现了通用句子编码器 现在我正在尝试预测句子的类概率 我也将字符串转换为数组 Code if model model type universal classifier basic class probs
  • 为 TFliteconverter 创建代表性数据集的正确方法是什么?

    我正在尝试推断tinyYOLO V2 with INT8权重和激活 我可以使用 TFliteConverter 将权重转换为 INT8 为了INT8激活 我必须提供代表性数据集来估计缩放因子 我创建此类数据集的方法似乎是错误的 正确的程序是

随机推荐