我正在尝试使用TensorFlow后端在Keras上实现我自己的图层。
训练期间有没有办法在张量内打印价值?
例如,我想在以下代码中打印x
和self.kernel
:
class MyLayer(Layer):
def __init__(self, output_dim, **kwargs):
self.output_dim = output_dim
super(MyLayer, self).__init__(**kwargs)
def build(self, input_shape):
# Create a trainable weight variable for this layer.
self.kernel = self.add_weight(name='kernel',
shape=(input_shape[1], self.output_dim),
initializer='uniform',
trainable=True)
super(MyLayer, self).build(input_shape)
def call(self, x):
# print x
# print self.kernel
return K.dot(x, self.kernel)
def compute_output_shape(self, input_shape):
return (input_shape[0], self.output_dim)
答案 0 :(得分:1)
您可以使用keras.backend.print_tensor
,这只是一个身份转换,具有打印张量值的副作用,以及可选的消息。例如:
import keras.backend as K
def call(self, x):
return K.dot(K.print_tensor(x, message='Value of x'),
K.print_tensor(self.kernel,
message='Value of kernel'))
有关详细信息,请参阅https://keras.io/backend/#print_tensor。
答案 1 :(得分:0)
在使用TensorFlow后端时,您也可以使用tf.print。
def call(self, x):
tf.print(x)
tf.print(self.kernel)
return K.dot(x, self.kernel)