2016-06-03 8 views
2

Я пытаюсь передать список массивов 2d numpy разных размеров в сверточную нейронную сеть, используя параметр feed_dict., подающий сверточную нейронную сеть с входами с переменным размером в тензорном потоке

x = tf.placeholder(tf.float32, [batch_size, None, None, None]) y = tf.placeholder(tf.float32, [batch_size, 1]) optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost) optimizer.run(feed_dict={x: batch[0], y: batch[1], keep_prob: 0.5})

и я получаю следующее сообщение об ошибке:

ValueError: setting an array element with a sequence.

я понял, что партия [0] должен содержать массивы с одинаковым размером. Я пытаюсь найти способ применить оптимизацию с использованием массивов с переменным размером, но все предлагаемые решения требуют изменить размер массивов, что невозможно в моем случае, потому что эти массивы не являются изображениями и содержат фрагменты ДНК разных размеров (любые модификации на любом элементе массива приведут к потере важной информации)

У кого-нибудь есть идея?

ответ

1

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

Matrix #1 Matrix #2 
    1 2 3  1 2 3 
    None  4 5 6 
    None  7 8 9 

Никаких операций не будет работать на матрице №1, которая по сути является тем, что у вас есть. Если вы хотите кормить в матрицах vairable размера (разных размеров среди matices, но размер размера с рядами и колоннами) this может решить вашу проблему

Args:

форма: Форма тензор для подачи (необязательно). Если форма не указана, вы можете подать тензор любой формы.

Или, если вы ищете разреженный тензор (tf.sparse_placeholder() - неопределенные элементы установлены на ноль), this question может помочь.

Смежные вопросы