众所周知,张量流的新版本现已发布。他们提供了一种使用tf_upgrade_v2 --infile original_code.py --outfile upgraded_code.py
轻松升级代码的工具。升级代码后,它将产生一个txt report
来通知您除了需要特别注意的问题(即已弃用的功能,无法对其进行进一步替换)以外的所有更改。
因此,不幸的是我的代码中有几个不推荐使用的功能,我正在寻找替代的功能,但仍未能成功。如果有人可以建议我替代任何产品,我将不胜感激。
1-
L1 = tf.compat.v1.get_variable('L1', shape=[feature_dim, feature_dim],
initializer=tf.contrib.layers.xavier_initializer(), regularizer = tf.contrib.layers.l2_regularizer(wd), use_resource=False)
因此不赞成使用xavier_initializer和l2_regularizer。
2- image = tf.contrib.image.rotate(image, angles=rnd_rot_angle)
3- transform = tf.contrib.image.matrices_to_flat_transforms(tf.linalg.inv(afine_tf.params))
4- image = tf.contrib.image.transform(image, transform)
5- python日志记录功能不再在终端上显示任何日志。
import tenosflow
import logging
logging.basicConfig(level=logging.INFO)
logging.info('It doens't print this')
答案 0 :(得分:1)
对于正则化器和初始化器,可以分别使用tf.keras.regularizers.l2
和tf.initializers.GlorotNormal
(或GlorotUniform)。后者实质上是Xavier初始化的另一个名称。
至于contrib模块,它已从TF 2.0中完全删除,并且至少到目前为止,许多功能无法直接替换。但是您可以在输入管道中使用tf.py_function
。它可以将任何python逻辑包装为TensorFlow op。
def custom_resize(image):
return np.resize(image, (100,100))
def parse_func(image, label):
return tf.py_function(custom_resize, inp=[image], Tout=[tf.float32])
...
dataset = dataset.map(parse_func)
因此,基本上,我们可以定义任何函数,该函数将接受numpy数组,而不是张量,并将其应用于数据集中的任何张量。