Как я могу передать несколько параметров в слой DistributionLambda из вероятности Tensorflow? - PullRequest
0 голосов
/ 11 мая 2019

Я строю модель с использованием вероятности Кераса и Тензорного потока, которая должна выводить параметры гамма-функции (альфа и бета) вместо одного параметра, как показано в примере ниже (t передается в распределение Normal функция).

import tensorflow as tf
import tensorflow_probability as tfp
tfd = tfp.distributions

# Build model.
model = tf.keras.Sequential([
  tf.keras.layers.Dense(1),
  tfp.layers.DistributionLambda(lambda t: tfd.Normal(loc=t, scale=1)),
])

# Do inference.
model.compile(optimizer=tf.optimizers.Adam(learning_rate=0.05), loss=negloglik)
model.fit(x, y, epochs=500, verbose=False)

# Make predictions.
yhat = model(x_tst)

Вместо этого я хотел бы вывести alpha и beta из двух Dense слоев, а затем передать эти параметры в Gamma функцию распределения.

1 Ответ

1 голос
/ 23 мая 2019

Как то так?

import tensorflow as tf
tf.enable_eager_execution()

print(tf.__version__) # 1.14.1-dev20190503

import tensorflow_probability as tfp
tfd = tfp.distributions

X = np.random.rand(4, 1).astype(np.float32)

d0 = tf.keras.layers.Dense(2)(X)
s0, s1 = tf.split(d0, 2)
dist = tfp.layers.DistributionLambda(lambda t: tfd.Gamma(t[0], t[1]))(s0, s1)

dist.sample() 
# <tf.Tensor: id=10580, shape=(2,), dtype=float32, numpy=array([1.1754944e-38, 1.3052921e-01], dtype=float32)>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...