В настоящее время я пытаюсь визуализировать изученные фильтры моего CNN с тензорным потоком в python. Я нашел много версий, работающих с набором данных mnist, при обучении новой сети, но не смог применить его к моему приложению. Я подготовил объект Estimator, который хранится на моем диске, с помощью настраиваемого набора данных. Модель содержит такие слои, как
conv1 = tf.layers.conv2d(inputs=input_layer, filters=32, kernel_size=[5, 5], padding="same", activation=tf.nn.sigmoid)
и только хотят визуализировать предсказание на одном изображении с размерами (28,28,3). В тензорной панели этот слой просто называется "conv2d", а остальные называются "conv2d_2" и т.д., Он в основном имеет ту же структуру, что и сеть MNIST по умолчанию, за исключением использования сигмовидной функции.
Я не знаю, как это реализовать - я думал о получении весов и смещений и пересчитывании каждого слоя в отношении размера шага и фильтра, но я уже не могу получить вес, и я думаю, что есть более простое решение.
В настоящее время я пытаюсь визуализировать изученные фильтры моего CNN с тензорным потоком в python.
Я думаю, что вы имеете в виду визуализацию активизации определенного слоя? Если это так, вам просто нужно запустить тензор этого слоя для изображения, которое вы хотите:
import matplotlib.pyplot as plt
# Model definition
...
conv1 = tf.layers.conv2d(inputs=input_layer, filters=32, kernel_size=[5, 5], padding="same", activation=tf.nn.sigmoid)
...
# Getting activations
acts = sess.run(conv1, {input_layer: your_image})
# Visualizing every filters
for i in range(acts.shape[3]):
plt.imshow(acts[:,:,:,i].squeeze())
plt.show()
Если вы используете Estimator, вы можете непосредственно визуализировать эволюцию своих активаций с помощью tf.summary.image() в вашей модели_fn:
# In model_fn
...
conv1 = tf.layers.conv2d(inputs=input_layer, filters=32, kernel_size=[5, 5], padding="same", activation=tf.nn.sigmoid)
acts_filters = tf.unstack(conv1, axis=3)
for i, filter in enumerate(acts_filters):
tf.summary.image('filter' + str(i), tf.expand_dims(filter, axis=3))
estim = tf.estimator.Estimator(model_fn=model..., model_dir="...")
прежде чем указать, что я хочу что-то предсказать, например