我有一个Seq2Seq模型。我有兴趣在每次迭代中打印出编码器输出的矩阵值。
例如,由于encoder
中矩阵的维度为(?,20)
和epoch =5
,并且在每个时期中,都有10
个迭代,
我想查看每个10
的维度(?,20)
的{{1}}矩阵。
我以here的身份进入了几个链接,但它仍然没有打印出值矩阵。 使用上面链接中提到的代码:
epoch
我知道了
import keras.backend as K
k_value = K.print_tensor(encoded)
print(k_value)
有没有一种简单的方法来显示KERAS中每一层的张量值?
谢谢!
更新1
通过尝试以下代码:Tensor("Print:0", shape=(?, 20), dtype=float32)
会引发此错误:
K_value = K.eval(encoded)
答案 0 :(得分:0)
打印张量的非常简单的方法:
from keras import backend as K
k_value = K.eval(tensor)
print(k_value)
更新1
创建一个回调以在每个纪元末打印:
class callback(Callback):
def __init__(self, model, X_train):
self.model = model
self.x = X_train
def on_train_begin(self, logs={}):
return
def on_train_end(self, logs={}):
return
def on_epoch_begin(self, epoch, logs={}):
return
def on_epoch_end(self, epoch, logs={}):
inp = model.input # input placeholder
outputs = model.layers[N].output # get output of N's layer
functors = K.function([inp, K.learning_phase()], [outputs])
layer_outs = functors([self.x, 1.])
print('\r OUTPUT TENSOR : %s' % layer_outs)
return
def on_batch_begin(self, batch, logs={}):
return
def on_batch_end(self, batch, logs={}):
return
像这样在fit()方法中调用此函数:
callbacks=[callback(model = model, X_train = X_train)])
灵感来自Keras, How to get the output of each layer?
希望这将最终对您有所帮助!