Я пытаюсь вычислить градиенты выходных данных по отношению к входным данным, которые можно назвать анализом чувствительности моей модели. Я использую keras 2.2.4 при поддержке tensorflow 1.13.1. Вот код

#signal_x shape (88, 50500, 1)
#signal_x <class 'numpy.ndarray'>
#metadata_x shape (88, 24)
#metadata_x <class 'numpy.ndarray'>

grad_func = tf.gradients(model.output[:, m], model.input)
jacobian_func = K.function([model.input, K.learning_phase()], grad_func)

# model.input: [<tf.Tensor 'cu_dnnlstm_1_input:0' shape=(?, ?, 1) dtype=float32>, <tf.Tensor 'dense_1_input:0' shape=(?, 24) dtype=float32>]

for i in range((signal_x.shape[0] // batch_size) + 1):
            batch_signal = signal_x[i * batch_size:((i + 1) * batch_size) if i != (signal_x.shape[0] // batch_size) else signal_x.shape[0]]
            batch_metadata = metadata_x[i * batch_size:((i + 1) * batch_size) if i != (metadata_x.shape[0] // batch_size) else metadata_x.shape[0]]
            jac_test_set = np.array(jacobian_func([batch_signal, batch_metadata, False]))

Но я получаю эту проблему:

File "classes/asdas.py", line 178, in jacobian_tensorflow
    jac_test_set = np.array(jacobian_func([batch_signal, batch_metadata, False]))
  File "/home/hassan/.local/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py", line 2715, in __call__
    return self._call(inputs)
  File "/home/hassan/.local/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py", line 2655, in _call
    dtype=tf.as_dtype(tensor.dtype).as_numpy_dtype))
AttributeError: 'list' object has no attribute 'dtype'

Любая помощь приветствуется. Заранее спасибо.

1
Maystro