2016-10-21 3 views
1

В качестве предисловия я понимаю, как создавать тензоры нестандартного размера и их основное использование.Tensorflow трудный размер партии загрузки

Мои скрытые слои зависят от данных batch_size данных, которые я передаю. Таким образом, я переношу размер партии в местозаполнитель. К сожалению, это вызвало у меня кучу стресса и ошибок, так как многие функции не очень хорошо работают с формами None. Я ищу способ использовать динамическую форму тензора для вычисления количества узлов в моих скрытых слоях.

В настоящее время я получаю ошибку

InvalidArgumentError (смотри выше TRACEBACK): Вы должны кормить значение для тензора заполнителем 'Placeholder_2' с DTYPE int32 [[Node: Placeholder_2 = Placeholderdtype = DT_INT32, форма = [], _device = "/ job: localhost/replica: 0/task: 0/cpu: 0"]]

Невозможно инициализировать заполняющую константу формой, неизвестной при запуске. Я был бы очень признателен за помощь

Ниже приведен фрагмент кода, в котором ошибка изолирована.

import tensorflow as tf 

x = tf.placeholder(tf.float32, shape=(None, 784)) 

nodes = tf.div(tf.shape(x)[0],2) 

bias = tf.Variable(tf.constant(.1 ,shape = [nodes]), validate_shape = False) 

init = tf.initialize_all_variables() 
sess = tf.InteractiveSession() 
sess.run(init) 

Я также получить ошибку:

форма = [Int (DIM) для тусклых в форме] Ошибка типа: Int() аргумент должен быть строкой, байт-подобный объект или число, не «Тензор»

при замене линии заполнения с

bias = tf.Variable(tf.constant(.1 ,shape = [nodes]), validate_shape = False) 

Спасибо заранее.

ответ

0

Форма Тензор не может зависеть от другого Тензора. Формы должны содержать только целые значения, или None, указывая, что форма неизвестна. Если вы хотите выполнять вычисления по фигурам, вам нужно выполнить эти вычисления с использованием примитивов Python, которые работают с целыми числами, а не с примитивами Tensorflow, которые работают с тензорами.

(Вы не должны отключить проверку формы --- это знак, что вы делаете что-то неправильно.)

Это говорит, что это необычно для различных слоев в нейронной сети, чтобы использовать различные значения для партии размер --- вы уверены, что это то, что вы хотите сделать?

Если вы уверены, попробовать что-то вроде этого:

import tensorflow as tf 

batch_size = 32 

x = tf.placeholder(tf.float32, shape=(batch_size, 784)) 
bias = tf.Variable(tf.constant(.1, shape = [batch_size/2])) 

init = tf.initialize_all_variables() 
sess = tf.InteractiveSession() 
sess.run(init) 

Я надеюсь, что помогает!

+0

Привет, Я собирался иметь слои, которые используют разные размеры партии, зависящие от размера примера. Поскольку я сделал больше исследований, я видел, что это не обязательно, спасибо большое! – user3204416

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