【问题标题】:RuntimeError: NaN in hidden0_W, No handlers could be found for logger "sknn" scikit-neuralnetworkRuntimeError: NaN in hidden0_W, No handlers could be found for logger "sknn" scikit-neuralnetwork
【发布时间】:2015-11-02 13:42:13
【问题描述】:

我正在尝试在 Python 中实现神经网络分类器。这是函数的sn-p

def create_and_train_nn(train_predictors,train_responses):

   print '\t\tcreating Neural Network'
   nn = Classifier(
   layers=[
       Layer("Maxout", units=100, pieces=2),
       Layer("Softmax")],
   learning_rate=0.001,
   n_iter=25)
   print '\t\tNeural Network created successfully'

   print '\t\ttraining Neural Network'
   fit = nn.fit(train_predictors,train_responses)
   print "NN Fitted"

   print '\t\tNeural Network successfully trained'

   return nn

在执行代码后,我得到了以下错误。

No handlers could be found for logger "sknn"
   Traceback (most recent call last):
     File "D:/Predictive-Analytics/CodeBase/Tests/balanceClasses/parameterTesting/neural_1.py", line 590, in <module>
       start(table1='small_ds1_tse_temporal_lookback6',table2='balanced_new_small_ds1_tse_temporal_lookback6_m1_6hr_0106')
     File "D:/Predictive-Analytics/CodeBase/Tests/balanceClasses/parameterTesting/neural_1.py", line 588, in start
       main(table1,table2,30,5,'gini',100,fname,start_date,end_date,i+1,ds)
     File "D:/Predictive-Analytics/CodeBase/Tests/balanceClasses/parameterTesting/neural_1.py", line 257, in main
       nn = create_and_train_nn(train_predictors,train_responses)
     File "D:/Predictive-Analytics/CodeBase/Tests/balanceClasses/parameterTesting/neural_1.py", line 481, in create_and_train_nn
       fit = nn.fit(train_predictors,train_responses)
     File "C:\Users\Dickson\Anaconda\lib\site-packages\sknn\mlp.py", line 283, in fit
       return super(Classifier, self)._fit(X, yp)
     File "C:\Users\Dickson\Anaconda\lib\site-packages\sknn\mlp.py", line 157, in _fit
       raise e
   RuntimeError: NaN in hidden0_W

我已经用谷歌搜索了这个错误,并且有一些建议可以将学习率降低 10 倍。但即使在那之后问题仍然存在。此外,似乎没有其他解决方案运作良好。我也无法理解此错误与什么上下文相关。任何帮助都会很有帮助。

【问题讨论】:

  • 检查你的数据集,也许它包含 NaN 的?

标签: python scikit-learn neural-network theano scikits


【解决方案1】:

我还得到了 fit() 命令出错的“未找到处理程序...。训练发散并返回 NaN”。你需要做两件事。

首先,将以下内容添加到代码顶部:

import logging
logging.basicConfig()

其次,您需要对数据进行规范化,以便输入为 [-1,1] 或 [0,1]。

我正在训练我的神经网络对图像进行分类,一旦我使用以下方法对图像值进行归一化:

#normalize data
img *= (1.0/img.max())

它奏效了。最良好的祝愿,希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 2012-12-18
    • 2022-12-15
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多