У меня есть настроенная сеть, в которой я использую vgg16.Я следую за разделом 5.4.2 Визуализация фильтров CovNet в Deep Learning With Python (который очень похож на руководство в блоге Keras по визуализации фильтров коннетов здесь ).
Руководство просто использует сеть vgg16.Моя хорошо настроенная модель использует модель vgg16 в качестве базы, например:
model.summary()
Layer (type) Output Shape Param #
=======================================================================
vgg16 (Model) (None, 4, 4, 512) 14714688
_______________________________________________________________________
flatten_1 (Flatten) (None, 8192) 0
_______________________________________________________________________
dense_7 (Dense) (None, 256) 2097408
_______________________________________________________________________
dense_8 (Dense) (None, 3) 771
========================================================================
Total params: 16,812,867
Trainable params: 16,812,867
Non-trainable params: 0
У меня возникает проблема при запуске этой строки: grads = K.gradients(loss, model.input)[0]
гдекогда я использую свою сеть с точной настройкой, я получаю результат «NoneType»
Вот код из руководства:
> from keras.applications import VGG16
> from keras import backend as K
>
> model = VGG16(weights='imagenet',
> include_top=False)
>
> layer_name = 'block3_conv1'
> filter_index = 0
>
> layer_output = model.get_layer(layer_name).output
> loss = K.mean(layer_output[:, :, :, filter_index])
>
> grads = K.gradients(loss, model.input)[0]
Чтобы воспроизвести на моей точно настроенной модели, я 'мы использовали точный тот же код, за исключением Я, очевидно, изменил импортированную модель:
model = keras.models.load_model(trained_models_dir + 'fine_tuned_model.h5')
... и я такжепришлось индексировать во вложенный объект Model (мой первый слой - это объект Model, как показано выше), чтобы получить слой 'block2_con1':
my_Model_object = 'vgg16'
layer_name = 'block3_conv1'
filter_index = 0
layer_output =
model.get_layer(my_Model_object).get_layer(layer_name).output
любая идея, почему запуск grads = K.gradients(loss, model.input)[0]
в моей сети с тонкой настройкойприведет к "NoneType" ??
Спасибо.