Возникла проблема при создании общего слоя полного подключения - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть FCN, чтобы получить карту трех фетров ([batch, 6, 6, 128]), а затем я хочу создать общий слой полного соединения, чтобы отобразить карту трех объектов ([batch, 6, 6, 128]) к [batch, 128], это мой код:

def bulit_triplet(self):
    #Buliding the postive, achor, negative

    #self.anchor = tf.nn.l2_normalize(self.templates, 1, 1e-10, name='embeddings')
    #self.postive = tf.nn.l2_normalize(self.templates1, 1, 1e-10, name='embeddings1')
    #self.negative = tf.nn.l2_normalize(self.instance_embeds[:,0:6,0:6,:], 1, 1e-10, name='embeddings2')
    self.anchor = self.templates
    self.positive = self.templates1
    self.negative = self.instance_embeds[:, 0:6, 0:6, :]

    self.anchor_embeds = logit(self.anchor, reuse=False)
    self.positive_embeds = logit(self.positive, reuse=True)
    self.negative_embeds = logit(self.negative, reuse=True) 
def logit(inputs, reuse=None, is_training=True, dropout_keep_prob=0.8, bottleneck_layer_size=128,
  scope='logit_alexnet_rt'):
    end_points_l = {}
    with tf.variable_scope(scope, 'logit_alexnet_rt', [inputs], reuse=reuse):
      with slim.arg_scope([slim.batch_norm, slim.dropout], is_training=is_training):
        with slim.arg_scope([slim.conv2d, slim.max_pool2d, slim.avg_pool2d],stride=1, padding='SAME'):
            net = inputs
            end_points_l['pre'] = net
            net = slim.flatten(net)
            net = slim.dropout(net, dropout_keep_prob, is_training=True, scope='dropout')
            end_points_l['PreLogitsFlatten'] = net
            net = slim.fully_connected(net, 128, activation_fn=None, scope='bottleneck')
            end_points_l['Fc'] = net
    return net, end_points_l

, но он не работает:

Traceback (most recent call last):
  File "experiments/SiamFC-3s-color-scratch.py", line 29, in <module>
    '--enforce_clean': False,
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/sacred/experiment.py", line 209, in run
    run()
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/sacred/run.py", line 221, in __call__
    self.result = self.main_function(*args)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/sacred/config/captured_function.py", line 46, in captured_function
    result = wrapped(*args, **kwargs)
  File "experiments/../train_siamese_model.py", line 106, in main
    model_va.build(reuse=True)
  File "experiments/../siamese_model.py", line 277, in build
    self.bulit_triplet()
  File "experiments/../siamese_model.py", line 131, in bulit_triplet
    self.anchor_embeds = logit(self.anchor, reuse=False)
  File "experiments/../embeddings/convolutional_alexnet.py", line 271, in logit
    net = slim.fully_connected(net, 128, activation_fn=None, scope='bottleneck')
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 181, in func_with_args
    return func(*args, **current_args)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/contrib/layers/python/layers/layers.py", line 1639, in fully_connected
    outputs = layer.apply(inputs)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/python/layers/base.py", line 671, in apply
    return self.__call__(inputs, *args, **kwargs)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/python/layers/base.py", line 559, in __call__
    self.build(input_shapes[0])
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/python/layers/core.py", line 137, in build
    trainable=True)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/python/layers/base.py", line 458, in add_variable
    trainable=trainable and self.trainable)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 1203, in get_variable
    constraint=constraint)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 1092, in get_variable
    constraint=constraint)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 417, in get_variable
    return custom_getter(**custom_getter_kwargs)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/contrib/layers/python/layers/layers.py", line 1539, in layer_variable_getter
    return _model_variable_getter(getter, *args, **kwargs)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/contrib/layers/python/layers/layers.py", line 1531, in _model_variable_getter
    custom_getter=getter, use_resource=use_resource)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 181, in func_with_args
    return func(*args, **current_args)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/contrib/framework/python/ops/variables.py", line 262, in model_variable
    use_resource=use_resource)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 181, in func_with_args
    return func(*args, **current_args)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/contrib/framework/python/ops/variables.py", line 217, in variable
    use_resource=use_resource)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 394, in _true_getter
    use_resource=use_resource, constraint=constraint)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/python/ops/variable_scope.py", line 742, in _get_single_variable
    name, "".join(traceback.format_list(tb))))
ValueError: Variable logit_alexnet_rt/bottleneck/weights already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope? Originally defined at:

  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/contrib/framework/python/ops/variables.py", line 217, in variable
    use_resource=use_resource)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 181, in func_with_args
    return func(*args, **current_args)
  File "/home/xieyangyang/anaconda3/envs/tensorflow1/lib/python2.7/site-packages/tensorflow/contrib/framework/python/ops/variables.py", line 262, in model_variable
    use_resource=use_resource)

Что здесь происходит?Что я должен делать , моя версия tenorflow: (1.4.0-gpu), моя версия python 2.7, моя система Ubuntu16.04

...