我在 TF/Keras 代码中做了一些探索,基于该调查,我相信
model.output.op
提供的是模型输出层的数学“运算”。输入提供该操作的输入张量列表(例如,在您的情况下,输入 [0] 是实际操作的第一个输入)。剩下的部分是切入该张量以提取某个元素。
为 VGG16 示例模型运行此代码后:
import tensorflow as tf
tf.keras.backend.clear_session() # For easy reset of notebook state.
myNewModel = tf.keras.applications.VGG16()
print('myNewModel.output.op:')
print(myNewModel.output.op)
print('myNewModel.output.op.inputs[0]:')
print(myNewModel.output.op.inputs[0])
print('myNewModel.output.op.inputs[0][0,3]:')
print(myNewModel.output.op.inputs[0][0,3])
我得到了这个输出 - 请注意,我使用 3 作为 class_index 仅作为示例:
myNewModel.output.op:
name: "predictions/Softmax"
op: "Softmax"
input: "predictions/BiasAdd"
attr {
key: "T"
value {
type: DT_FLOAT
}
}
myNewModel.output.op.inputs[0]:
Tensor("predictions/BiasAdd:0", shape=(?, 1000), dtype=float32)
myNewModel.output.op.inputs[0][0,3]:
Tensor("strided_slice:0", shape=(), dtype=float32)
我希望这有帮助。