首页 > 解决方案 > 张量流 2.0.0-alpha0 版本中废弃函数的问题

问题描述

众所周知,新版本的张量流现已推出。它们提供了一个工具,可以轻松地使用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')

标签: tensorflow

解决方案


对于正则化器和初始化器,您可以分别使用tf.keras.regularizers.l2tf.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 数组,而不是张量,并将其应用于数据集中的任何张量。


推荐阅读