我想查看keras模型每一层的输出。到目前为止,我有这样的事情
for layer in model.layers:
print(layer.output)
而且我得到这样的输出:
Tensor("word_input_6:0", shape=(None, 198), dtype=int32)
Tensor("embedding_6/Identity:0", shape=(None, 198, 100), dtype=float32)
Tensor("lstm/Identity:0", shape=(None, 100), dtype=float32)
Tensor("main_output_8/Identity:0", shape=(None, 6), dtype=float32)
但是我想看看张量内部是什么。有什么办法看吗?
有几个选项可获取每一层的输出。你可以。(1)定义一个keras函数,并对每一层进行评估,或者。(2)定义功能模型并运行predict
方法以获取输出。
有关这些方法的更多详细信息,请参见此stackoverflow_question(Keras, How to get the output of each layer?)
根据您的要求,您可以选择其中一个。我选择了第一个,并通过简单的示例进行了演示。完整示例代码here。
#Getting output of each layer
from tensorflow.keras import backend as K
inp = model.input # input
outputs = [layer.output for layer in model.layers] # all layer outputs
functors = [K.function([inp], [out]) for out in outputs] # evaluation functions
# Testing
test = test = x_test[1]
count = 0
for func in functors:
print('\n')
print("Layer Name: ",layer_names[count])
print('\n')
print(func([test]))
count+=1