tensorflow中contrib模块问题。(tf.contrib)
程序员文章站
2022-07-13 11:39:00
...
问题提出:
v1版本中tensorflow中contrib模块十分丰富,但是发展不可控,因此在v2版本中将这个模块集成到其他模块中去了。在学习tensorflow经常碰到tf.contrib的代码,一敲就报错。
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
weight=tf.constant([[1.0,2.0],[-3.0,-4.0]])
regularizer_l2=tf.contrib.layers.l2_regularizer(.5)
regularizer_l1=tf.contrib.layers.l1_regularizer(.5)
with tf.Session() as sess:
print(sess.run(regularizer_l2(weight)))
print(sess.run(regularizer_l1(weight)))
会报错:
解决方案1:
自己写函数,这需要对原理的理解(比如上面L2正则化),如果本身有实力可以自己写。但对于小白显然不可取。
解决方案2:
卸载v2版本TensorFlow,重新下载v1版本TensorFlow,同时适配各类软件及软件包,较为麻烦。由于v2都能配置好,卸掉重新配置v1版本也不是什么问题。因此在这里不予讨论。
解决方案3:
首先查看官方文档说明:
https://tensorflow.google.cn/versions/r1.15/api_docs/python/tf/contrib?hl=en
https://tensorflow.google.cn/guide/migrate#a_note_on_slim_contriblayers
发现contrib的内容可以集成到下面三个包中。
tf.keras.layers.Layer
tf.keras.Model
tf.Module
因此,尝试以后,发现L2正则化存在于tf.keras里面。
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
weight=tf.constant([[1.0,2.0],[-3.0,-4.0]])
regularizer_l2=tf.keras.regularizers.l2(.5)
regularizer_l1=tf.keras.regularizers.l1(.5)
with tf.Session() as sess:
print(sess.run(regularizer_l2(weight)))
print(sess.run(regularizer_l1(weight)))
运行结果:
是contrib结果的2倍,可以通过除以2解决。
下一篇: Pytorch中的BatchNorm
推荐阅读
-
Python中MySQLdb和torndb模块对MySQL的断连问题处理
-
Python中import导入上一级目录模块及循环import问题的解决
-
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
-
Python中MySQLdb和torndb模块对MySQL的断连问题处理
-
Python中import导入上一级目录模块及循环import问题的解决
-
C++ 调用Python3 脚本中无法引入内建模块的问题解决方法
-
asp.net 在DNN模块开发中遇到的resx怪问题
-
Python3.6中Twisted模块安装的问题与解决
-
Python os模块中的isfile()和isdir()函数均返回false问题解决方法
-
python中pika模块问题的深入探究