我将预训练参数用于我的vgg网(最后三层除外)。我只训练我的vgg网的最后三层。
我注意到vgg网络图像的预处理应该减去RGB的平均值。但是,似乎无需将像素值转换为[-1,1]。
我使用softmax_cross_entropy来弥补我的损失。 logit是vgg net的最后一个输出。 vgg的最后一层是conv(实际上是fc)。标签是一个热门标签。
我已经尝试了很多学习率的配置,例如0.1 0.03 0.01 0.003 0.001。然而,前三个学习率导致纳米损失。最后两种配置导致不稳定的损失。我还应该降低学习率吗?我注意到,对于许多例子,诸如0.1或0.01之类的值都很好。 请帮我。这是我的代码。
_R_MEAN = 123.68
_G_MEAN = 116.78
_B_MEAN = 103.94
...
samples_all, labels_all = getsamples()
...
image = tf.image.decode_jpeg(imagecontent, channels=3)
image=tf.image.resize_images(image, [240, 320])
channels = tf.split(2, 3, image)
channels[0] -= _R_MEAN
channels[1] -= _G_MEAN
channels[2] -= _B_MEAN
image=tf.concat(2, channels)
...
images, labels = tf.train.batch([image, label], 4, 2, 32)
net, end = vgg16Net(images, num_classes = 101, is_training=True)
...
losses.softmax_cross_entropy(net, labels)
total_loss = losses.get_total_loss()
optimizer = tf.train.GradientDescentOptimizer(0.001)
training_op = optimizer.minimize(total_loss, var_list=train_var)
...