Что делает model.output.op в Keras? - PullRequest
       41

Что делает model.output.op в Keras?

1 голос
/ 07 ноября 2019

Это часть кода 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?

enter image description here

На этом рисунке показано, что является model.output.op.inputs [0] [0, class_index]?

1 Ответ

0 голосов
/ 07 ноября 2019

Я немного изучил код TF / Keras, и на основании этого исследования я считаю, что

model.output.op

обеспечивает математическую «операцию» на выходном слое модели. inputs предоставляют список входных тензоров для этой операции (например, в вашем случае input [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)

Надеюсь, это поможет.

...