Я пытаюсь извлечь важность из моей 1D CNN. Большая часть онлайн-документации относится к 2D, 3D, данным изображения и проблемам классификации. У меня есть многомерный временной ряд, который выводит последовательности временных рядов. Я пробовал Shaply и keras_vis, но ничего не решает мою проблему. Одна проблема заключается в том, что мои входные данные имеют 229 функций, а первый слой 1DConv отображает 64 фильтра. Извлекая веса из первого слоя, я могу определить, какой фильтр способствует изучению слоя. Однако я не могу перевести это на исходный вывод.
Мой вопрос двоякий (если я могу сделать оба):
- Учитывая весовые коэффициенты в первом слое, как я могу визуализировать значимость конкретного фильтра?
- Как извлечь важные функции; учитывая мои специфические c проблемы и арки .?
Вот краткое изложение и код, используемый для извлечения весов ....
Model: "model_3"
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
CNN1-Input-Historical (InputLay [(None, 10, 229)] 0
__________________________________________________________________________________________________
CNN1-Conv1D (Conv1D) (None, 7, 64) 58688 CNN1-Input-Historical[0][0]
__________________________________________________________________________________________________
conv1d_3 (Conv1D) (None, 3, 128) 24704 CNN1-Conv1D[0][0]
__________________________________________________________________________________________________
CNN1-MaxPooling (MaxPooling1D) (None, 2, 128) 0 conv1d_3[0][0]
__________________________________________________________________________________________________
CNN1-Flatten (Flatten) (None, 256) 0 CNN1-MaxPooling[0][0]
__________________________________________________________________________________________________
dense_9 (Dense) (None, 50) 12850 CNN1-Flatten[0][0]
__________________________________________________________________________________________________
dense_10 (Dense) (None, 50) 2550 dense_9[0][0]
__________________________________________________________________________________________________
dropout_6 (Dropout) (None, 50) 0 dense_10[0][0]
__________________________________________________________________________________________________
dense_11 (Dense) (None, 100) 5100 dropout_6[0][0]
__________________________________________________________________________________________________
dropout_7 (Dropout) (None, 100) 0 dense_11[0][0]
__________________________________________________________________________________________________
Output-1 (Dense) (None, 3) 303 dropout_7[0][0]
__________________________________________________________________________________________________
Output-2 (Dense) (None, 3) 303 dropout_7[0][0]
__________________________________________________________________________________________________
Output-3 (Dense) (None, 3) 303 dropout_7[0][0]
==================================================================================================
Total params: 104,801
Trainable params: 104,801
Non-trainable params: 0
model.summary()
outputs = [layer.output for layer in model.layers[1:]]
activation_model = Model(inputs=model.input, outputs=outputs)
activations = activation_model.predict(X.reshape(1,10,229))#3-d 10 timesteps and 229 featrues
first_layer_activation = activations[0]
second_layer_activation = activations[1]
Первый слой средних весов