В модели CNN Как мы можем найти инициализированные значения фильтров, которые мы использовали - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть код модели cnn.

classifier = Sequential()
classifier.add(Convolution2D(32,3,3, input_shape = 
(256,256,3),activation = "relu"))
classifier.add(MaxPooling2D(pool_size = (2,2)))

Итак, теперь мне нужно найти, с какими значениями были инициализированы 32 фильтра?Любой код, который помогает в печати значений фильтров

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Получить соответствующий слой из модели

layer = classifier.layers[0]  # 0th layer is the convolution in your architecture

Для каждого слоя свертки будет две переменные (ядра фильтра и смещение).Получите соответствующий

filters = layer.weights[0]  # kernel is the 0th index

Теперь фильтры содержат значения, которые вы ищете, и это тензор.Чтобы получить значения тензора, используйте функцию get_value () бэкэнда Keras

import keras.backend as K
print(K.get_value(wt))

. Это выведет массив формы (3, 3, 3, 32), который преобразуется в 32 фильтра с размером ядра 3x3.для 3 каналов.

0 голосов
/ 27 февраля 2019

Вот стандартная инициализация Keras Conv2d по умолчанию: kernel_initializer='glorot_uniform' (или init='glorot_uniform' для более старой версии keras).

Вы можете посмотреть, что этот инициализатор делает здесь: Инициализаторы Keras

Наконец, вот один из способов получить вес вашего первого слоя:

classifier = Sequential()
classifier.add(Convolution2D(32,3,3, input_shape = 
(256,256,3),activation = "relu"))
classifier.add(MaxPooling2D(pool_size = (2,2)))

first_layer = classifier.layers[0]
print(first_layer.get_weights()) # You may need to process this output tensor to get a readable output and not just a raw tensor
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...