我现在面对这个问题已经有几天了,我认为我正在采取正确的方法,但我想确定一下 .
我正在训练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:他们有一个很小的变化 .
提前致谢!如果您需要更多信息,请不要犹豫,问我 .