我现在面对这个问题已经有几天了,我认为我正在采取正确的方法,但我想确定一下 .

我正在训练4个转换层和两个完全连接的层 . 张量流中的模型如下:

  • Conv1:64个过滤器,7x7内核大小,泄漏relu激活函数,He et al kernel initializer,偏置初始化程序0.001 .

  • MaxPooling

  • Conv2:96个过滤器,5x5内核大小,泄漏relu激活函数,He等内核初始化器,偏置初始化器0.001 .

  • MaxPooling

  • Conv3:96个过滤器,5x5内核大小,泄漏relu激活函数,He等内核初始化器,偏置初始化器0.001 .

  • MaxPooling

  • Conv4:64个过滤器,3x3内核大小,泄漏relu激活函数,He等内核初始化器,偏置初始化器0.001 .

我使用自定义EMD丢失功能,正确计算损失 . 我使用Adam Optimizer,如下所示:

optimizer = tf.train.AdamOptimizer(learning_rate=.01)
grads = optimizer.compute_gradients(loss_tensor)
train_op = optimizer.apply_gradients(grads, global_step)

我不使用 optimizer.minimize() 因为我想在tensorboard中打印渐变 .

tf.Session() 中,我执行以下步骤:

  • 初始化迭代器 .

  • 初始化全局变量 .

  • 循环减少损失 .

在循环中,我执行以下操作:

_, summary, loss_res, logits_res = sess.run([train_op, merge, loss_tensor, logits])

误差减小,重量在步骤上略有变化,但梯度是恒定的 . 我不知道为什么会这样,或者我的错误在哪里 . 我附上了Tensorboard面板的一些截图:

Main graph:这是前面解释过的模型主图 .

Gradients histograms:它们仅在第一步中发生变化 .

Weights and bias histograms:他们有一个很小的变化 .

提前致谢!如果您需要更多信息,请不要犹豫,问我 .