пакетная структура в тензорном потоке - PullRequest
0 голосов
/ 09 апреля 2020

Я следовал учебному пособию по нейронной сети с tenorflow и набором данных MNIST. Я обнаружил следующий фрагмент кода:

for _ in range(1000):
    batch = mnist.train.next_batch(50)
    train_step.run(feed_dict={x: batch[0], y: batch[1]})

У меня есть некоторые проблемы с визуализацией структуры пакета. В частности, индекс партии. batch[0] означает ли это все 50 изображений в пакете, а batch[1] означает все 50 ярлыков для изображений? Было бы замечательно, если бы кто-то мог показать структуру партии визуально. Я искал, но не мог найти хороший учебник по этому вопросу.

1 Ответ

1 голос
/ 09 апреля 2020

Вот мой базис c код для отображения изображений в пакетном режиме

def display_one_flower(image, title, subplot, red=False, titlesize=16):
    plt.subplot(*subplot)
    plt.axis('off')
    plt.imshow(image)
    if len(title) > 0:
        plt.title(title, fontsize=int(titlesize) if not red else int(titlesize/1.2), 
color='red' if red else 'black', fontdict={'verticalalignment':'center'}, 
pad=int(titlesize/1.5))
    return (subplot[0], subplot[1], subplot[2]+1)

def display_batch_of_images(images,labels, predictions=None):
    """This will work with:
    display_batch_of_images(images)
    display_batch_of_images(images, predictions)
    display_batch_of_images((images, labels))
    display_batch_of_images((images, labels), predictions)
   """

    # auto-squaring: this will drop data that does not fit into square or square- 
    #rectangle
    rows = int(math.sqrt(len(images)))
    cols = len(images)//rows

    # size and spacing
    FIGSIZE = 13.0
    SPACING = 0.1
    subplot=(rows,cols,1)
    if rows < cols:
        plt.figure(figsize=(FIGSIZE,FIGSIZE/cols*rows))
    else:
        plt.figure(figsize=(FIGSIZE/rows*cols,FIGSIZE))

    # display
    tempo=""
    for i, (image, label) in enumerate(zip(images[:rows*cols], labels[:rows*cols])):
        title = '' if label is None else tempo 
        correct = True
        if predictions is not None:
        title, correct = title_from_label_and_target(predictions[i], label)
        dynamic_titlesize = FIGSIZE*SPACING/max(rows,cols)*40+3 # magic formula tested to work from 1x1 to 10x10 images
        subplot = display_one_flower(image, title, subplot, not correct, titlesize=dynamic_titlesize)

    #layout
    plt.tight_layout()
    if label is None and predictions is None:
        plt.subplots_adjust(wspace=0, hspace=0)
    else:
        plt.subplots_adjust(wspace=SPACING, hspace=SPACING)
    plt.show()

Теперь мы отображаем изображения в пакетном режиме

изображения содержат все 50 изображений, а метка содержит все 50 меток

  display_batch_of_images(images,labels)
...