当前位置: 首页 > 面试题库 >

如何在Keras中获得图层的权重?

从焱
2023-03-14
问题内容

我正在使用Windows 10,Python 3.5和tensorflow 1.1.0。我有以下脚本:

import tensorflow as tf
import tensorflow.contrib.keras.api.keras.backend as K
from tensorflow.contrib.keras.api.keras.layers import Dense

tf.reset_default_graph()
init = tf.global_variables_initializer()
sess =  tf.Session()
K.set_session(sess) # Keras will use this sesssion to initialize all variables

input_x = tf.placeholder(tf.float32, [None, 10], name='input_x')    
dense1 = Dense(10, activation='relu')(input_x)

sess.run(init)

dense1.get_weights()

我得到错误: AttributeError: 'Tensor' object has no attribute 'weights'


问题答案:

如果您写:

dense1 = Dense(10, activation='relu')(input_x)

然后dense1不是图层,而是图层的输出。该层是Dense(10, activation='relu')

所以看来您的意思是:

dense1 = Dense(10, activation='relu')
y = dense1(input_x)

这是完整的代码段:

import tensorflow as tf
from tensorflow.contrib.keras import layers

input_x = tf.placeholder(tf.float32, [None, 10], name='input_x')    
dense1 = layers.Dense(10, activation='relu')
y = dense1(input_x)

weights = dense1.get_weights()


 类似资料:
  • 问题内容: 我已经使用CNN训练了二进制分类模型,这是我的代码 在这里,我想像TensorFlow一样获得每一层的输出,我该怎么做? 问题答案: 你可以使用以下命令轻松获取任何图层的输出: 对于所有图层,请使用以下命令: 注:为了模拟差使用learning_phase如1.在layer_outs以其它方式使用0. 编辑:(基于评论) 创建张量函数,该函数随后用于从给定输入的符号图中获取输出。 现在

  • 问题内容: 我想重置(随机化)我的Keras(深度学习)模型中所有层的权重。原因是我希望能够使用不同的数据拆分多次训练模型,而不必每次都进行(缓慢的)模型重新编译。 受此讨论的启发,我正在尝试以下代码: 但是,它仅部分起作用。 部分是因为我检查了一些layer.get_weights()值,但它们似乎有所变化。但是,当我重新开始训练时,成本值比第一次运行时的初始成本值低得多。几乎就像我已经成功重置

  • 我正在使用MNIST数据集,我正在使用keras来训练卷积神经网络。关于权重矩阵,有些东西我不明白。 输入层有28x28=784个神经元。然后我使用: 在我训练模型后,把W=模型。get\u weights(),I打印W[I]。每个i的形状并获得: 据我所知,这意味着对于第一个隐藏层有32个8x8=64的图像(因为(28-7)/3 1=8)因此第一个隐藏层中有64x32=2048个神经元。 下一部

  • 问题内容: 我正在尝试转学;为此,我想删除神经网络的最后两层并添加另外两层。这是一个示例代码,它也会输出相同的错误。 我使用删除了该图层,但是当我尝试添加其输出时出现此错误 AttributeError:“模型”对象没有属性“添加” 我知道该错误的最可能原因是不当使用。我应该使用其他什么语法? 编辑: 我试图在keras中删除/添加图层,但不允许在加载外部重物后添加它。 它显示此错误 问题答案:

  • 我有一个简单的顺序神经网络,我想用它来训练分类器。它由一个输入层、三个隐藏层和一个输出层组成,如下所示: 如何提取与每个隐藏层关联的权重。最终目标是使用激活函数计算每个标签成为正确标签的概率。 希望你能理解。感谢您的任何帮助。