相关疑难解决方法(0)

深学南楠失败的原因

也许是一般性的问题,但任何人都可以解释什么会导致卷积神经网络发散?

具体细节:

我正在使用Tensorflow的iris_training模型和我自己的一些数据并继续获取

错误:tensorflow:模型与损失= 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")
Run Code Online (Sandbox Code Playgroud)

我已经尝试调整优化器,使用零学习率,并且不使用优化器.任何有关网络层,数据大小等的见解都是值得赞赏的.

python machine-learning theano keras tensorflow

46
推荐指数
4
解决办法
7万
查看次数

如何解决南方损失?

问题

我在MNIST上运行深度神经网络,其中损失定义如下:

cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, label))

该程序似乎运行正常,直到我在10000多个小批量中获得纳米损失.有时,程序正常运行直到完成.我想tf.nn.softmax_cross_entropy_with_logits是给了我这个错误.这很奇怪,因为代码只包含muladd操作.

可能解决方案

也许我可以用:

if cost == "nan":
  optimizer = an empty optimizer 
else:
  ...
  optimizer = real optimizer
Run Code Online (Sandbox Code Playgroud)

但我找不到那种类型nan.我该如何检查变量nan

我怎么能解决这个问题?

python nan tensorflow

9
推荐指数
4
解决办法
3万
查看次数

Session.run(fetches)是否保证按顺序执行其"fetches"参数?

Session.run(fetches, feed_dict)保证执行其fetches有序参数呢?

文档似乎没有提到它.

例如,如果你跑

sess.run([accuracy, train_op], feed_dict=feed_dict)
Run Code Online (Sandbox Code Playgroud)

执行的顺序很重要:train_op将更新影响的参数accuracy.

python machine-learning tensorflow

6
推荐指数
1
解决办法
1779
查看次数

Keras + Tensorflow:调试NaNs

这是一个关于如何在张量流图中找到Nan的第一次出现的一个很好的问题:

在向后传递中调试nans

答案非常有用,以下是代码:

train_op = ...
check_op = tf.add_check_numerics_ops()

sess = tf.Session()
sess.run([train_op, check_op])  # Runs training and checks for NaNs
Run Code Online (Sandbox Code Playgroud)

显然,第一次遇到Nan时,同时运行训练和数字检查将导致错误报告.

我如何将其整合到Keras中?在文档中,我找不到任何看起来像这样的东西.

我也检查了代码.更新步骤在此处执行:https: //github.com/fchollet/keras/blob/master/keras/engine/training.py

有一个函数称为_make_train_function创建计算损失和应用更新的操作.这被称为训练网络.

我可以像这样更改代码(总是假设我们在tf后端运行):

check_op = tf.add_check_numerics_ops()

self.train_function = K.function(inputs, 
    [self.total_loss] + self.metrics_tensors + [check_op],
    updates=updates, name='train_function', **self._function_kwargs)
Run Code Online (Sandbox Code Playgroud)

我目前正在尝试正确设置它,并不确定上面的代码是否真的有效.也许有一种更简单的方法?

python machine-learning neural-network keras tensorflow

6
推荐指数
1
解决办法
757
查看次数