1

我有一个以概率层结尾的网络,如下所示:

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). 任何想法?

4

1 回答 1

0

也许您可以再添加一层:

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)

或者您是否需要对结果分布做更多的事情而不仅仅是样本?

编辑:因为在那种情况下,也许你可以创建一个生成器,将批次作为 numpy 数组提供给模型并产生结果分布?

于 2019-10-28T21:54:57.893 回答