Я нашел способ помещать разреженные изображения в тензорный поток, включая пакетную обработку, если это может помочь.
Я создаю 4-мерную разреженную матрицу в словаре с размерами batchSize, xLen, ylen, zLen (где zLen равно 3 для цвета, например). Следующий псевдокод предназначен для пакета из 50 трехцветных изображений 32x96 пикселей. Значения - это интенсивность каждого пикселя. В приведенном ниже фрагменте я показываю первые 2 пикселя первой инициализируемой партии ...
shape = [50, 32, 96, 3]
indices = [[0, 20, 31, 0],[0, 22, 33, 1], etc...]
values = [12, 24, etc...]
batch = {"indices": indices, "values": values, "shape": shape}
При настройке вычислительного графа я создаю разреженный заполнитель правильных размеров.
images = tf.sparse_placeholder(tf.float32, shape=[None, 32, 96, 3])
«Нет» используется, поэтому я могу изменять размер партии.
Когда я впервые хочу использовать изображения, например чтобы передать в пакетную свертку, я конвертирую их обратно в плотный тензор:
images = tf.sparse_tensor_to_dense(batch)
Затем, когда я буду готов запустить сеанс, например для обучения я передаю 3 компонента пакета в словарь, чтобы они были подхвачены sparse_placeholder:
train_dict = {images: (batch['indices'], batch['values'], batch['shape']), etc...}
sess.run(train_step, feed_dict=train_dict)
Если вам не нужно выполнять пакетную обработку, просто оставьте первое измерение и удалите «none» из формы заполнителя.
Я не мог найти способа передать изображения в пакетном режиме в виде массива разреженных матриц. Это сработало, только если я создал 4-е измерение. Мне было бы интересно узнать об альтернативах.
Хотя это не дает точного ответа на ваш вопрос, я надеюсь, что он пригодится, поскольку я боролся с аналогичными проблемами.
person
BobbyG
schedule
04.04.2017