Визуализация важности 1D CNN для последовательностей временных рядов - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь извлечь важность из моей 1D CNN. Большая часть онлайн-документации относится к 2D, 3D, данным изображения и проблемам классификации. У меня есть многомерный временной ряд, который выводит последовательности временных рядов. Я пробовал Shaply и keras_vis, но ничего не решает мою проблему. Одна проблема заключается в том, что мои входные данные имеют 229 функций, а первый слой 1DConv отображает 64 фильтра. Извлекая веса из первого слоя, я могу определить, какой фильтр способствует изучению слоя. Однако я не могу перевести это на исходный вывод.

Мой вопрос двоякий (если я могу сделать оба):

  1. Учитывая весовые коэффициенты в первом слое, как я могу визуализировать значимость конкретного фильтра?
  2. Как извлечь важные функции; учитывая мои специфические 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]

Первый слой средних весов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...