我尝试获取由以下定义的层的权重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
通过正确使用张量名称。