我正在尝试构建具有以下结构的贝叶斯神经网络:
y1 = w11 x11 w12 x12 + b1
y2 = w2 y1 + b2
w11, w12, b1, w2, b2 ~ N(0,1)
x11, x12
变量的类型在哪里tf.float32
w11 = tfd.Norma(0,1)
w12 = tfd.Norma(0,1)
b1 = tfd.Normal(0,1)
y1 = w11 x11 + w12 x12 + b1
如何获得随机变量 y1?
我试过 edward2,但我想实现我自己版本的变分推理方法。所以我决定自己实现
W = tf.cast(np.random.rand(3,2), dtype=tf.float32)
X = tfp.distributions.Normal([[1,2,3],[2,2,3]],[[3,4,5],[5,6,7]])
b = tfp.distributions.Normal([[1,2],[2,2]],[[3,4],[5,6]])
y = tf.add(tf.matmul(W,X) + b)
我对 y 的预期结果应该是一个随机变量 ~ 正常
我懂了
TypeError: Failed to convert object of type <class 'tensorflow_probability.python.distributions.normal.Normal'> to Tensor. Contents: tfp.distributions.Normal("Normal_6/", batch_shape=(2, 3), event_shape=(), dtype=float32). Consider casting elements to a supported type.