在 TensorFlow 中使用 CIFAR-100 数据集训练 Resnet-50,无法获得良好的准确性

Training Resnet-50 with CIFAR-100 dataset in TensorFlow, can't get good accuracy

我正在尝试通过 cifar-100 在 tensorflow 中创建一个 resnet-50 模型 dataset.I 已经使用内置 resnet_v1_50 在 tensorflow 中创建模型,上面有两个完全连接的层 head.But我的验证准确率停留在近 37%。有什么问题???我配置错误定义和配置 resnet_v1_50???我的模型创建代码如下。

import tensorflow as tf
from tensorflow.contrib.slim.python.slim.nets import resnet_v1


X = tf.placeholder(dtype=tf.float32, shape=[None, 32, 32, 3])

Y = tf.placeholder(dtype=tf.float32, shape=[None, 100])


net, end_points = resnet_v1.resnet_v1_50(X,global_pool=False,is_training=True)

flattened = tf.contrib.layers.flatten(net)

dense_fc1 = tf.layers.dense(inputs=flattened,units=625, activation=tf.nn.relu,kernel_initializer=tf.contrib.layers.xavier_initializer())

dropout_fc1 = tf.layers.dropout(inputs=dense_fc1,rate=0.5, training=self.training)

logits = tf.layers.dense(inputs=dropout_fc1, units=num_classes,kernel_initializer = tf.contrib.layers.xavier_initializer())

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=Y))

optimizer = tf.train.AdamOptimizer(learning_rate=0.001).minimize(cost)

我认为你有一个额外的致密层。 ResNet 使用带有 softmax 和 size=num_classes 的单个 fully-connected 层。

您可能还需要确保您的超参数设置正确,例如 learning_rate 和 weight_decay,并且您的输入处理管道也正确。

这里有一个额外的 link 来查看您的管道是否类似于 working solution