首页 > 解决方案 > tensorflow 2.0, variable_scope(), TypeError: __call__() got an unexpected keyword argument 'partition_info'

问题描述

我已经使用 将 CNN 模型从 tf1.x 转换为 tf2.0 tf_upgrade_v2,但是当我使用这个转换后的模型时,我得到了一个错误:

File "/home/hsw/virtual_env/tf2.0/lib/python3.6/site-packages/tensorflow/python/ops/variable_scope.py", line 2492, in default_variable_creator import_scope=import_scope, distribute_strategy=distribute_strategy) File "/home/hsw/virtual_env/tf2.0/lib/python3.6/site-packages/tensorflow/python/ops/variables.py", line 216, in __call__ return super(VariableMetaclass, cls).__call__(*args, **kwargs) File "/home/hsw/virtual_env/tf2.0/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py", line 422, in __init__ constraint=constraint) File "/home/hsw/virtual_env/tf2.0/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py", line 545, in _init_from_args initial_value() if init_from_fn else initial_value, File "/home/hsw/virtual_env/tf2.0/lib/python3.6/site-packages/tensorflow/python/ops/variable_scope.py", line 886, in <lambda> shape.as_list(), dtype=dtype, partition_info=partition_info) TypeError: __call__() got an unexpected keyword argument 'partition_info'

似乎有问题variables.py,转换后的模型如下:

    with tf.compat.v1.variable_scope('backbone', reuse=tf.compat.v1.AUTO_REUSE):
      net = tf.compat.v1.layers.separable_conv2d(inputs, 16, 3, 1, 'same',
                                     activation=tf.nn.elu,
                                     depthwise_initializer=tf.keras.initializers.glorot_normal(),
                                     pointwise_initializer=tf.keras.initializers.glorot_normal(),
                                     name='conv1')
      net = tf.compat.v1.layers.max_pooling2d(net, 2, 2, padding='same')
      net = tf.compat.v1.layers.separable_conv2d(net, 32, 3, 1, 'same',
                                     activation=tf.nn.elu,
                                     depthwise_initializer=tf.keras.initializers.glorot_normal(),
                                     pointwise_initializer=tf.keras.initializers.glorot_normal(),
                                     name='conv2')

应该怎么做才能解决这个问题?

标签: tensorflowtensorflow2.0

解决方案


这是一个错误,它已经在 github 上提交了。见那里的讨论:https ://github.com/tensorflow/tensorflow/issues/26665#issuecomment-472950222


推荐阅读