如何从keras图层的输出中打印数据?

问题描述 投票:1回答:1

我想查看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)

但是我想看看张量内部是什么。有什么办法看吗?

tensorflow keras lstm tensorflow2.0
1个回答
2
投票

有几个选项可获取每一层的输出。你可以。(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
© www.soinside.com 2019 - 2024. All rights reserved.