API набора данных Tensorflow: градиент "Нет"? - PullRequest
0 голосов
/ 03 мая 2018

У меня проблемы с API Tensorflow Dataset. Я хотел бы передать некоторые параметры для каждого образца, но не могу их оптимизировать.

sample_data = tf.placeholder(...)
design = tf.placeholder(...)

mixture_prob = tf.Variable(..., shape=[num_mixtures, num_samples])

# transpose to get 'num_samples' to axis 0:
mixture_log_prob_t = tf.transpose(tf.log(mixture_prob, name="mixture_log_prob"))
assert mixture_log_prob_t.shape == [num_samples, num_mixtures]

Вот причина моей проблемы: У меня есть некоторые образцы данных вместе с матрицей дизайна. Кроме того, каждый образец имеет параметры 'num_mixtures', которые я хотел бы оптимизировать.

data = tf.data.Dataset.from_tensor_slices((
    sample_data,
    design,
    mixture_log_prob_t
))
data = data.repeat()
data = data.shuffle(batch_size * 4)
data = data.apply(tf.contrib.data.batch_and_drop_remainder(batch_size))

iterator = data.make_initializable_iterator()

batch_sample_data, batch_design, batch_mixture_log_prob = iterator.get_next()
batch_mixture_log_prob = tf.transpose(batch_mixture_log_prob)

Теперь при запуске «optimizer.gradient ()» я получаю «None» для этого параметра:

>>> model.gradient
[(None, <tf.Variable 'mixture_prob/logit_prob:0' shape=(2, 2000) dtype=float32_ref>), ...]
...