我已经使用 将 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')
应该怎么做才能解决这个问题?