Я пытаюсь получить веса слоев, определенных как tf.keras.layers
, используя get_tensor_by_name
в 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
, правильно используя тензорное имя.