Мне нужно создать случайную переменную внутри моего model_fn()
, имеющую форму [batch_size, 20]
.Использовать batch_size в model_fn в skflow
Я не хочу передавать batch_size
в качестве аргумента, потому что тогда я не могу использовать другой размер партии для прогнозирования.
Удаление деталей, которые не касаются этого вопроса, мой model_fn() является:
def model(inp, out):
eps = tf.random_normal([batch_size, 20], 0, 1, name="eps"))) # batch_size is the
# value I do not want to hardcode
# dummy example
predictions = tf.add(inp, eps)
return predictions, 1
, если я заменю [batch_size, 20]
на inp.get_shape()
, я получаю
ValueError: Cannot convert a partially known TensorShape to a Tensor: (?, 20)
при запуске myclf.setup_training()
.
Если я пытаюсь
def model(inp, out):
batch_size = tf.placeholder("float", [])
eps = tf.random_normal([batch_size.eval(), 20], 0, 1, name="eps")))
# dummy example
predictions = tf.add(inp, eps)
return predictions, 1
я ValueError: Cannot evaluate tensor using eval(): No default session is registered. Use
с sess.as_default() or pass an explicit session to eval(session=sess)
(по понятным причинам, потому что я не предоставил feed_dict)
Как я могу получить доступ к значению batch_size
внутри model_fn()
, оставаясь в состоянии изменить его во время предсказания?
Пробуйте, используя None вместо batch_size.eval() – Aaron
@Aaron Я пытался, но это дает мне 'TypeError: Ожидаемая двоичном или строка unicode, полученная None ' –