use*_*384 5 python machine-learning neural-network tensorflow tensorboard
我正在使用Tensorflow DNNRegressor Estimator模型来制作神经网络。但是调用estimator.train()函数给出的输出如下:
即我的损失函数在每个步骤中都变化很大。但是据我所知,我的损失函数应该减少而无需迭代。另外,找到随附的Tensorboard Visualization屏幕截图以了解损失功能:
我无法弄清的疑问是:
首先,让我指出tf.contrib.learn.DNNRegressor使用带有 的线性回归头mean_squared_loss,即简单的 L2 损失。
是整体损失函数值(到目前为止处理的每个步骤的组合损失)还是只是该步骤的损失值?
图表上的每个点都是学习到目前为止最后一步的损失函数的值。
如果是该步骤的损失值,那么如何获得整体损失函数的值并查看其趋势,我认为该值应该随着迭代次数的增加而减小?
没有整体损失函数,您可能指的是每一步后损失如何变化的图表。这正是 Tensorboard 向您展示的内容。你是对的,它的趋势并没有像它应该的那样下降。这表明你的神经网络没有学习。
如果这是整体损失值,那为什么波动这么大呢?我错过了什么吗?
神经网络不学习的一个常见原因是超参数选择不当(尽管您可能会犯更多错误)。例如:
为了检查神经网络是否至少以某种方式工作,我通常所做的就是将训练集减少到很少的示例,并尝试过度拟合网络。这个实验非常快,所以我可以尝试各种学习率、初始化方差和其他参数来找到最佳点。一旦我有了稳定下降的损失图,我就会继续做更大的一组。
| 归档时间: |
|
| 查看次数: |
2088 次 |
| 最近记录: |