手动升级tf.contrib.slim到tf 2.0版本

9

我的Python代码使用了tf.contrib.slim的功能,升级到TensorFlow 2.0后不再工作。我该怎么升级以下代码:

import tensorflow.contrib.slim as slim
import tensorflow.contrib.slim.nets

# ...

net = slim.conv2d(
    inp, 
    dim,
    [3, 3],
    rate=1,
    normalizer_fn=slim.layer_norm,
    activation_fn=lrelu,
    scope='g_' + str(width) + '_conv1') 

谢谢。

1
你有尝试过什么吗?实际上整个文档都专门讨论了这个话题,其中包括一个名为关于Slim & contrib.layers的说明的部分。 - o-90
3
是的,我研究过那个,但发现对我并不是很有帮助,因为我在使用tensorflow方面还是新手 :/ - Jonas G.
3
我同意Jonas的看法,这毫不有用。 - Bill Chen
3个回答

10

您可以使用tf_slim包代替(https://github.com/google-research/tf-slim

但是,更新此软件包以适应TF2的推送请求仍在等待中。因此,您应该从分支安装: pip install git+https://github.com/adrianc-a/tf-slim.git@remove_contrib


2
仍然不完全支持TF2。例如,在使用tensorflow.contrib.training.python.training import evaluation时会出现错误。 - Pamungkas Jayuda

10

首先需要安装 tf-slim

pip install --upgrade tf_slim

然后将 import tensorflow.contrib.slim as slim 替换为 import tf_slim as slim ,这样就可以解决相同的问题了。希望这能有所帮助。


1
那应该可以做到:
net = tf.keras.layers.Conv2D(filters=dim, kernel_size=3, name='g_' + str(width) + '_conv1')(inp)
net = tf.keras.layers.BatchNormalization()(net)
net = tf.keras.layers.LeakyReLU()(net)

使用Slim时,有一个选项可以提及在卷积层之后要使用哪种批量归一化和激活。在2.0版本中无法这样做,因此您需要在两个不同的层中明确指定所需的归一化和激活。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接