


















另外 TF 2.0 的 API 和 PyTorch 其实很接近了,如果你有心,是可以写个兼容层的。。。
TF 2.0 替代全局 collection 的是可以直接递归从根组件收集各种对象,比如 update ops,比如 regularization loss。
----
其实你们 Keras 党还好啦,没有多少变更。我作为 tf.layers 党才蛋疼呢。。。
写 Bayesian 网络的时候,每个概率式子都是一个子网络,算上概率分布的参数还得有更多。一个 x,y,z 三变量的网络就得有 6 个子隐藏网络 + 四个高斯分布各两个独立的线性激活层,统共 14 个组件。(比如 HVAE https://arxiv.org/abs/1705.07120 )。如果按照 Keras 的做法,你得在构造函数里面创建 14 个独立的对象,然后在合适的地方调用,简直太坑爹了。
如果用上 reuse + tf.layers,只要在构造网络的时候写一遍就行了。
比如我的库写的 p(x,y,z) = p(x|z) p(z|y) 三变量的 p 网络: https://github.com/haowen-xu/tfsnippet/blob/develop/tfsnippet/examples/auto_encoders/gm_vae.py#L144
再比如别人用 PyTorch 写的 p(x,z1,z2) = p(x|z1,z2) p(z1|z2) 三变量的 p 网路: https://github.com/jmtomczak/vae_vampprior/blob/master/models/HVAE_2level.py#L225
哪个简洁,一目了然。
----
可惜的是,Bayesian net 不是主流,被默默地忽视了。明明 reuse 在这个场景下超级有用的。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。