Использование генераторов в сетях, заканчивающихся слоем вероятности тензорного потока - PullRequest
1 голос
/ 25 октября 2019

У меня есть сеть, которая заканчивается слоем вероятности примерно так:

model = tfk.Sequential([
            tfkl.InputLayer(10),
            tfkl.Dense(tfpl.MultivariateNormalTriL.params_size(2)),
            tfpl.MultivariateNormalTriL(2)])

И я создаю свой набор данных из генератора:

data_generator = tf.data.Dataset.from_generator(
            data_generator,
            output_types=(tf.float32, tf.float32)
).batch(batch_size)

Я могу соответствоватьмодель с fit_generator но как я могу сделать то же самое для прогнозирования? (Я пробовал predict_generator, но безуспешно)

Более того, если X - это массив numpy, я могу просто сделать model(X).sample(100) Я хочу сделать то же самое с моим генератором, что-то вроде model(data_generator).sample(100),Любая идея?

1 Ответ

0 голосов
/ 29 октября 2019

Может быть, вы могли бы добавить еще один слой:

model = tfk.Sequential([
    tfkl.InputLayer(10),
    tfkl.Dense(tfpl.MultivariateNormalTriL.params_size(2)),
    tfpl.MultivariateNormalTriL(2),
    tfkl.Lambda(lambda x: tf.transpose(x.sample(100), perm=[1,0,2]))])

и затем использовать

model.predict_generator(data_generator, steps=steps)

Или вам нужно сделать больше с полученным распределением, а не только сэмплом?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...