【发布时间】:2017-02-24 07:30:33
【问题描述】:
也许这个问题太笼统了,但谁能解释一下什么会导致卷积神经网络发散?
具体说明:
我正在使用 Tensorflow 的 iris_training 模型和我自己的一些数据并不断获得
ERROR:tensorflow:Model 与 loss = NaN 发生分歧。
追溯...
tensorflow.contrib.learn.python.learn.monitors.NanLossDuringTrainingError:训练期间的 NaN 损失。
追溯起源于以下行:
tf.contrib.learn.DNNClassifier(feature_columns=feature_columns,
hidden_units=[300, 300, 300],
#optimizer=tf.train.ProximalAdagradOptimizer(learning_rate=0.001, l1_regularization_strength=0.00001),
n_classes=11,
model_dir="/tmp/iris_model")
我尝试调整优化器,使用零作为学习率,并且不使用优化器。感谢您对网络层、数据大小等的任何见解。
【问题讨论】:
-
这是随机梯度下降的自然属性,如果学习率太大,SGD会发散到无穷大
-
@YaroslavBulatov 我已经尝试过学习率约为 1E-15 的 AdagradOptiizer。也许我的数据不适合 SGD,你能推荐另一种算法吗?对 Tensorflow 和深度学习来说还是新手。
-
在我的情况下,标准化有帮助
-
我的解决方案是使用
tf.losses.sparse_softmax_cross_entropy(y, logits),而不是我自己使用tf.nn.Softmax实现的Safe Softmax
标签: python tensorflow machine-learning keras theano