我正在做一个与 CNN 相关的实验。
我想要实现的是具有学习率衰减的梯度下降和来自 AlexNet 的更新规则。
我要实现的算法如下(从 alexnet 论文中捕获的图片):
我认为我正确地做了学习率衰减,代码如下(我根据 global_step 正确检查了学习率衰减):
learning_rate = tf.train.exponential_decay(starter_learning_rate, global_step,
100000, 0.1, staircase=True)
接下来,我应该实现更新规则(权重衰减 0.005 和动量 0.9)我认为我正确地做了动量但找不到实现权重衰减的方法,代码也在下面:
cross_entropy = tf.reduce_mean(
tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits = fc8))
train_step = tf.train.MomentumOptimizer(learning_rate, 0.9).minimize(cross_entropy,global_step=global_step)
我是否正确地“学习率衰减”和“动量”?以及如何正确实现“0.005 的重量衰减”?
我使用 tf.layers.conv2d 作为卷积层,以便在其中包含权重和偏差。代码如下:
conv5 = tf.layers.conv2d(
inputs=conv4,
filters=256,
strides=1,
kernel_size=[3, 3],
kernel_initializer= tf.constant_initializer(pre_trained_model["conv5"][0]),
bias_initializer = tf.constant_initializer(pre_trained_model["conv5"][1]),
padding="SAME",
activation=tf.nn.relu,name='conv5')