为什么这两个FC API行为不同?

时间:2018-11-05 05:56:09

标签: python tensorflow

我正在实施resnet并在cifar-10数据集上进行培训。在“全局平均池”层之后,我添加了10路全连接层。我使用两个tensorflow API来实现fc层。但是,方法2对我有用,但是方法1不起作用。方法1根据tensorflow官方api:tf.contrib.layers.fully_connected。第二种方法是根据tf.layers.dense。我很困惑为什么第一种方法在这里不起作用。仅供参考,全局平均池化层的输出为[batch_size,1,1,64]。寻求帮助!预先感谢!

编辑:不起作用意味着如果我使用第一种方法,则fc的所有输出logit均变为零,这对我来说没有任何意义。

# Method 1: 
def fc(x, n_outputs, scope):
  with tf.variable_scope(scope):
    # x = tf.layers.flatten(x)
    x = tf.contrib.layers.fully_connected(x, num_outputs=n_outputs, weights_initializer=weight_init, weights_regularizer=weight_reg, scope=scope)
    return x

# Method 2:
def fc(x, n_outputs, scope):
  with tf.variable_scope(scope):
     x = tf.layers.flatten(x)
     x = tf.layers.dense(x, units=n_outputs, kernel_initializer=weight_init, kernel_regularizer=weight_reg)
     return x

0 个答案:

没有答案