对于 TensorFlow 2.0 的 Keras API, 大家怎么看 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lunafreya
V2EX    TensorFlow

对于 TensorFlow 2.0 的 Keras API, 大家怎么看

  •   lunafreya 2019-05-05 10:29:45 +08:00 6926 次点击
    这是一个创建于 2349 天前的主题,其中的信息可能已经有所发展或是发生改变。

    其实现在 TensorFlow 1.13 版已经有大量 tf.keras 的 API 了, 我尝试将 MobileNet V2 用 keras 那套 subclassing 方法写了一遍。 发现无论怎样操作都无法把 tf.keras.layers 里 Batch Normalization 的 running mean 以及 running variance 加进 UpdateOps 这个 Collection, 同时,类似这种情况含有 regularization 的 Conv2D 中也不会把 regularization 加进 regularization loss collection 里。 查了下 GitHub 上相关的 issue, 有人说用 keras 那套 model.compile 和 model.fit 来进行 training 可以 update 这些。 这是不是意味着以后习惯静态图的玩家基本就没有框架可用了。

    5 条回复    2019-05-05 11:13:50 +08:00
    ipwx
        1
    ipwx  
       2019-05-05 10:47:45 +08:00
    1、是的,静态图已经没有市场了。Collection 已经在 2.0 消失了。
    2、但是其实没有太大问题,你只要改一改习惯就好了。。。

    我去年也写了个库,写深度生成模型的,接下来也得大改,哭瞎。不过其实仔细想想,是改的了的。

    https://github.com/haowen-xu/tfsnippet
    ipwx
        2
    ipwx  
       2019-05-05 10:56:18 +08:00   1
    另外 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 在这个场景下超级有用的。
    ipwx
        3
    ipwx  
       2019-05-05 10:59:21 +08:00
    而且讲道理我本来是想今年完善文档然后发布一下我这个库,写个小论文的(我这库可以写 Bayesian net + flow model + pixelcnn,再加个 gan 的画就能四项全能了,目前还没有这么完整能写 deep generative model 的库,大多只能写某一类)。结果 TF 2.0 大改。。。( OTZ )
    rayhy
        4
    rayhy  
       2019-05-05 11:08:23 +08:00
    tf 的版本太多了,而且各种不兼容,早期写的 tf 的代码现在要想再用得脱层皮。最近搞毕设接触非得用到 tf 的代码,不知道该骂 tf 还是骂自己笨,疯了。

    pytorch 早期的代码现在再用就基本没甚问题,要改也是.data[0]改成.item()就差不多没了。
    tottea
        5
    tottea   div class="badges">   2019-05-05 11:13:50 +08:00
    @ipwx 拜见大佬。。。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     859 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 21:41 PVG 05:41 LAX 14:41 JFK 17:41
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86