machine-learning - model.output.op 在 keras 中做了什么?
问题描述
这是 grad-cam 代码的一部分:
def generate_grad_cam(img_tensor, model, class_index, activation_layer):
inp = model.input
y_c = model.output.op.inputs[0][0, class_index]
A_k = model.get_layer(activation_layer).output
做什么model.output.op.inputs[0][0,class_index]
?是什么model.output.op
?
在这张图中,model.output.op.inputs[0][0, class_index] 是哪一个??
解决方案
我在 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)
我希望这有帮助。
推荐阅读
- r - 通过在 r 中包含开始和结束日期来构建日期变量
- javascript - 找不到节点输出 - Node.js
- c - 在没有 user_mode_helper 函数的内核中运行用户空间应用程序
- bash - 在 Windows 10 上的 MINGW64 或 Cygwin 等 git bash shell 中使用 virtualenvwrapper
- lua - corona sdk / solar2d 多个移动物体
- javascript - JavaScript querySelector 和 CSS :target 伪类
- html - 歌词上方的响应和弦
- paradigms - 大多数编程语言是针对其编译器的声明式编程吗?
- c# - WEB API 的打印库(System.Drawing.Printin)问题
- cacti - 升级cacti 0.8.8H到1.2.16数据库Linux