Как отображать / визуализировать изображения после свертки и Relu в Tensorflow - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть этот код (во время тестирования, а не обучения) для моего входного изображения и первого свертка и слоя Relu:

convnet = input_data(shape=[None, IMG_SIZE, IMG_SIZE, IMAGE_CHANNELS], name='input')
convnet1 = conv_2d(convnet, FIRST_NUM_CHANNEL, FILTER_SIZE, activation='relu')
convnet1 = max_pool_2d(convnet1, FILTER_SIZE)

Если я распечатываю переменную convnet1, я получаю этот результат Tensor («MaxPool2D / MaxPool: 0», shape = (?, 52, 52, 32), dtype = float32) , что правильно, потому что мое входное изображение 256x256, а размер фильтра 5x5.

Мой вопрос: как я могу визуализировать данные / переменную convnet1?Он имеет 32 канала, поэтому я предполагаю, что могу отображать 32 черно-белых изображения с размерами 52x52.

1 Ответ

1 голос
/ 03 апреля 2019

Если вы хотите напечатать 32 из них на одном графике, вы можете сделать что-то вроде этого

def plot_convnet(convnet, input_num=0):
    # since convnet1 is 4dim (?,52,52,32) Assuming the first dim is Batch size you 
    # can plot the 32 channels of a single image from the batch given by input_num

    C = Session.run(convnet) # remove the session run if the tensor is already 
                             #evaluated

    # Number of channels -- 32 in your case 
    num_chnls = C.shape[3]

    # Number of grids to plot.
    # Rounded-up, square-root of the number of channels
    grids = math.ceil(math.sqrt(num_chnls))

    #Create figure with a grid of sub-plots.
    fig, axes = plt.subplots(grids, grids)

    for i, ax in enumerate(axes.flat):
       if i<num_chnls:
           im = C[input_num,:, :,  i]
           #Plot image.
           ax.imshow(im,                  
                     interpolation='nearest', cmap='seismic')
    plt.show()
...