2016-11-27 12 views
1

Обучение сети, хотел, чтобы иметь возможность передать параметр beta1 в качестве аргумента, и поэтому сделал это заполнителемПередача заполнителя для результатов оптимизатора к ошибке «initial_value должен иметь форму указанную»

self.beta1 = tf.placeholder(tf.float32)

пару строк позже ошибка происходит на этой линии

self.train_adam = tf.train.AdamOptimizer(self.eta, beta1=self.beta1, epsilon=1e-15).minimize(self.cost_m)

ошибка: ValueError: initial_value must have a shape specified: Tensor("Placeholder_5:0", dtype=float32)

Принимая beta1=self.beta1, результаты исчезают, поэтому ошибка должна быть связана с этим.

У меня нет подсказки, почему это происходит, поскольку placeholders не обязательно должны иметь указанную форму. Я пробовал использовать self.beta1 = tf.placeholder(tf.float32, shape=None), что тоже не работает, такая же ошибка.

Любые идеи?

+0

За год я столкнуться с той же проблемой и то помните, я спросил об этом раньше. Какое странное дизайнерское решение. – Nimitz14

ответ

2

Просто дайте форму [] вашему заполнителем, как это константа:

self.beta1 = tf.placeholder(tf.float32, shape=[]) 
+0

Спасибо, работал. – Nimitz14

+1

Как замечание, добавление 'shape = None' не имеет эффекта, потому что python уже принимает' shape' как 'None' по умолчанию, когда аргумент не указан. –

+0

Конечно. Но он не должен жаловаться в первую очередь на то, что «заполнители» не должны быть объявлены с формой. Я попробовал это, чтобы что-то сделать. – Nimitz14

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

  • Нет связанных вопросов^_^