- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将 Keras 与 Tensorflow 结合使用。 Keras 层有一个方法“get_weights()”和一个属性“weights”。我的理解是“权重”输出权重的 Tensorflow 张量,“get_weights()”评估权重张量并将值输出为 numpy 数组。然而,两者实际上向我展示了不同的值(value)观。这是要复制的代码。
from keras.applications.vgg19 import VGG19
import tensorflow as tf
vgg19 = VGG19(weights='imagenet', include_top=False)
vgg19.get_layer('block5_conv1').get_weights()[0][0,0,0,0]
#result is 0.0028906602, this is actually the pretrained weight
sess = tf.Session()
sess.run(tf.global_variables_initializer())
#I have to run the initializer here. Otherwise, the next line will give me an error
sess.run(vgg19.get_layer('block5_conv1').weights[0][0,0,0,0])
#The result here is -0.017039195 for me. It seems to be a random number each time.
我的 Keras 版本是 2.0.6。我的 Tensorflow 是 1.3.0。谢谢!
最佳答案
方法 get_weights()
实际上只是评估属性 weights
给定的 Tensorflow 张量的值。我在 get_weights()
和 sess.run(weight)
之间得到不同值的原因是我指的是两个不同 session 中的变量。当我运行 vgg19 = VGG19(weights='imagenet', include_top=False)
时,Keras 已经创建了一个 Tensorflow session 并在该 session 中使用预训练值初始化了权重。然后,我通过运行 sess = tf.Session()
创建了另一个名为 sess 的 Tensorflow session 。在此 session 中,权重尚未初始化。然后当我运行 sess.run(tf.global_variables_initializer())
时,随机数被分配给这个 session 中的权重。所以关键是要确保您在使用 Tensorflow 和 Keras 时使用的是同一个 session 。以下代码显示 get_weights()
和 sess.run(weight)
给出相同的值。
import tensorflow as tf
from keras import backend as K
from keras.applications.vgg19 import VGG19
sess = tf.Session()
K.set_session(sess)
vgg19 = VGG19(weights='imagenet', include_top=False)
vgg19.get_layer('block5_conv1').get_weights()[0][0,0,0,0]
#result is 0.0028906602, this is actually the pretrained weight
sess.run(vgg19.get_layer('block5_conv1').weights[0][0,0,0,0])
#The result here is also 0.0028906602
关于tensorflow - Keras 权重和 get_weights() 显示不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46063592/
我似乎找不到太多关于在 Keras 中运行神经网络时如何解释 get_weights() 输出的文档。据我了解,输出是由网络的结构决定的。因此,我在下面粘贴了网络结构的简化版本: model.add(
我想将自定义渐变应用于我的模型。 下面,actor_t 是我的模型。 get_weights() 返回一个 np.arrays 列表,查看 TensorFlow 的文档和代码,apply_gradie
我正在自学数据科学,一些奇特的东西引起了我的注意。在我正在研究的示例 DNN 教程中,我发现 Keras layer.get_weights() 函数为我的变量返回了空列表。我已成功进行交叉验证并使用
我正在使用 Keras 做一些实验,我只是监控了一个简单的 mlp 模型的权重更新: # model contains one input layer in the format of dense,
我将 Keras 与 Tensorflow 结合使用。 Keras 层有一个方法“get_weights()”和一个属性“weights”。我的理解是“权重”输出权重的 Tensorflow 张量,“
我将 Keras 与 Tensorflow 结合使用。 Keras 层有一个方法“get_weights()”和一个属性“weights”。我的理解是“权重”输出权重的 Tensorflow 张量,“
我正在使用 keras 对 mnist 数据集进行分类。我有兴趣对训练后生成的权重矩阵进行一些操作,但有些层权重矩阵看起来没有完全连接。 model = Sequential() model.add(
为什么 get_weights() 返回的权重值与实际权重不同?我认为初始化后这两种方法应该显示相同的权重。 import tensorflow as tf import os sess = tf.S
当我在 Keras 中运行神经网络(没有 BatchNormalization)时,我了解 get_weights() 函数如何提供神经网络的权重和偏差。然而,使用 BatchNorm 它会产生 4
当我使用 Keras 运行此代码时: networkDrive = Input(batch_shape=(1,length,1)) network = SimpleRNN(3, activation=
我正在尝试训练 LSTM 来对各种长度的序列进行分类。我想得到这个模型的权重,所以我可以在模型的有状态版本中使用它们。训练前,体重正常。此外,训练似乎运行成功,错误逐渐减少。但是,当我将掩码值从 -1
我是一名优秀的程序员,十分优秀!