module ‘tensorflow’ has no attribute ‘contrib’个人简要思路

今天看到一个学弟在和contrib斗智斗勇就莫名想笑,也有点回顾contrib这个背锅侠到底为他的子孙背了多少锅,本来也想多说一会,但考虑到大伙着急找答案的心情,等我说完思路再说。

1最简单的版本代换 也是大家最容易看到的,把tensorflow.compat.v1作为tf,或者在已有的tf上加个compat.v1,再看情况加一个disable_eager_excution()这个可以解决大部分v1被v2继承后的问题,比如app

2第二种继承是继承了,但是啊,他换路径,阿哲,我怎么找得到,别着急,我们先把这个函数复制到tensorflow路径下,对比一下确定是不是哪个文件,如果是,再根据路径改文件,所谓的函数导入也不过是把斜线变成了逗号罢了。

3前面三种基本能解决大部分问题,不过还是有些是你再怎么compat.v1也修改不了的,你在tensorflow里翻遍了也找不到,为什么呢,因为人家都跑出去单打独斗了,比如contrib下面的slim,就一点不顾旧情,变成tf_slim,还有一些是被tensorflow抛弃了,比如estimator下面的replicate_model_fn,直接被弃用,我当时也是被气得够呛,好好装好的环境,就因为这个彻底报废,安安心心去tf1,还有一些了tf.contrib.rnn现在就换成了tf.conpat.v1.nn.rnn。遇到这些问题大家就像遇到背英语单词变形的不规则形式一样先记着。

思路大致说完了,终于可以灌水了,这些问题,都是tensorflow向下不兼容导致的,这讨厌的tensorflow真不负责,狗都不用,哎打工所在,不得不用,想contrib当初tf1.0时代的大内总管,多风光,现在番号被撤了不说了,slim等义子跟他恩断义绝,出去单打独斗,被新皇帝tf2废除丢弃不说,死了还要当背锅侠,谁犯错了都找它,我也是有感于很多老哥出现很特殊的错误也都挂着conrib的名头,让大伙查找很麻烦,给大家一个大致的思路,不用普通问题花太多时间搜索,当然也有很多遗漏,个人能力所限,望见谅。作为一个被这些破问题烦透的人,给大伙一点建议,如果只是复现代码,没必要追求最新版tf,用tf1就好。如果复现之后还需要继续操作,那没办法只能tf2,那就少把t...w.compat.v1作为tf,尽可能使用代换法和添加法,小铁头娃课堂今天结束了,拜拜。

你可能感兴趣的:(tensorflow)