Helpers - компьютеры, интернет, программирование

Вычисление евклидова расстояния в Tensorflow не работает на графическом процессоре

Мне нужно вычислить евклидово расстояние между каждым изображением i в массиве с k изображениями (1 ‹= i ‹= k) с вводом image xrj, (1 ‹= j ‹= m) (k images и входное изображение xrj являются столбцом j матрицы IR). Когда процесс завершается для всех столбцов IR, он возвращает матрицу D формы k,m, содержащую все евклидовы расстояния между каждым < strong>k image для входного изображения xrj. Исходный код, используемый для выполнения этой задачи, показан в коде 1.

Матрица уменьшенных изображений из MNIST

Код 1

    D = np.zeros(shape=[ir_set[0].shape[0]-1, len(ir_set)])

    for i in range(len(ir_set)): # number of team members.
        shape = ir_set[i].shape
        qtd_images = shape[0] # number of 'k' similar images
        dim_image = shape[1:] # dimensions of the reduced image

        for j in range(qtd_images-1): 
            k = tf.placeholder(shape=dim_image, dtype=tf.float32)
            x = tf.placeholder(shape=dim_image, dtype=tf.float32)

            # L2 metric
            d = tf.sqrt(tf.reduce_sum(tf.square(tf.subtract(k, x)))) 
            distance = sess.run(d, feed_dict={k: ir_set[i][j], x: ir_set[i][qtd_images-1]})

            print('Computing distance: Model {0}/{1}, Image {2}/{3}'.format(i+1, len(ir_set), j+1, qtd_images-1), end='\r')
            D[j][i] = distance

    print('\nAll distances computed. Matrix D shape: {0}'.format(D.shape))
    return D

Проблема с Кодом 1 заключается в том, что для вычисления всех расстояний требуется слишком много времени, что позволяет моему графическому процессору все время простаивать. Почему этот код не использует мой графический процессор, поскольку все остальные процедуры Tensorflow используют его? Как изменить код 1, чтобы использовать GPU и, следовательно, работать быстрее?

Заранее спасибо.

22.05.2018

  • Какова форма ir_set? каждый элемент приведенной выше матрицы является изображением, поэтому в ИК-матрице должно быть (k+1) x m изображений? 22.05.2018
  • Да, в IR (ir_set) есть (k+1) x m элементов, которые являются изображениями из набора данных MNIST. 23.05.2018

Ответы:


1

Вы должны использовать поддержку tensorflow's broadcasting для вычисления евклидова расстояния для всех комбинаций изображений одновременно, вместо того, чтобы перебирать каждую из них.

Например:

k = 10
m = 5
im_size = 32*32
IR = tf.random_normal((k+1,m,im_size))
#split IR into (k,m,imsize) and (1,m,imsize)
ir, xr = tf.split(IR,[k, 1], axis=0 )

# Distance for all k*m values 
distances = tf.reduce_sum(tf.square(tf.subtract(ir, xr)), 2)

Ваш код зацикливается между процессором и графическим процессором, и большая часть времени тратится на процессор из-за заполнения заполнителей. Вышеприведенный полностью работает на графическом процессоре.

22.05.2018
Новые материалы

Интуитивное понимание тензоров в машинном обучении
Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

Почему объяснимость так важна прямо сейчас?
По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

Анимированный математический анализ
Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

Создание простого слайдера изображений с помощью JavaScript
Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

Создание базы данных с помощью супергероя «Python»
В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

ИИ для чайников: руководство для начинающих по пониманию будущего технологий
Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..