基本线性回归:训练标准是 NaN
Basic linear regression: training criterion is NaN
作为 CNTK 学习练习,我想我会修改 lr_bs.cntk
中的逻辑回归示例,并尝试让基本的线性回归工作。
而不是逻辑示例中的这个:
# parameters to learn
b = Parameter (LDim, 1) # bias
w = Parameter (LDim, SDim) # weights
# operations
p = Sigmoid (w * features + b)
lr = Logistic (labels, p)
err = SquareError (labels, p)
# root nodes
featureNodes = (features)
labelNodes = (labels)
criterionNodes = (lr)
evaluationNodes = (err)
outputNodes = (p)
...我只是将代码更改为:
# operations
p = (w * features + b)
lr = SquareError (labels, p)
err = SquareError (labels, p)
我将其用于我创建的合成数据集。但是,我随后尝试 运行 在我根据 Wine Quality 数据集创建的文件上使用它。我无法让它工作,我不知道如何前进。
Train 命令失败,诊断如下:
EXCEPTION occurred: The training criterion is not a number (NAN).
我将其解释为 lr
未生成有效数字。我只是不明白 SquareError
怎么会失败,以及如何解决这个问题。
有关信息,这是数据集在准备后的样子:
|features 7.400 0.700 0.000 1.900 |labels 5.000
|features 7.800 0.880 0.000 2.600 |labels 5.000
|features 7.800 0.760 0.040 2.300 |labels 5.000
|features 11.200 0.280 0.560 1.900 |labels 6.000
|features 7.400 0.700 0.000 1.900 |labels 5.000
我看不到任何明显有问题的数据问题。我是用CNTKTextFormatReader
读取数据的,可能是数据读取部分有问题,但没有调试我也不确定。
任何关于如何解决这个问题的建议都将不胜感激。
我有一个非常相似的入门想法,只是我修改了 Python 逻辑回归教程以创建一个线性回归示例。
我发现逻辑示例中指定的学习率太大,无法与线性回归所需的平方误差损失函数一起使用。因此,作为第一个建议,我建议您尝试将 learningRatesPerSample
降低到 0.001 或更小。
我快速 google 搜索了您看到的错误代码并返回 this issue,这也表明学习率可能是您的罪魁祸首。
如果您有兴趣,我在 Python 中写了一篇关于我的线性回归示例的 blog post。
作为 CNTK 学习练习,我想我会修改 lr_bs.cntk
中的逻辑回归示例,并尝试让基本的线性回归工作。
而不是逻辑示例中的这个:
# parameters to learn
b = Parameter (LDim, 1) # bias
w = Parameter (LDim, SDim) # weights
# operations
p = Sigmoid (w * features + b)
lr = Logistic (labels, p)
err = SquareError (labels, p)
# root nodes
featureNodes = (features)
labelNodes = (labels)
criterionNodes = (lr)
evaluationNodes = (err)
outputNodes = (p)
...我只是将代码更改为:
# operations
p = (w * features + b)
lr = SquareError (labels, p)
err = SquareError (labels, p)
我将其用于我创建的合成数据集。但是,我随后尝试 运行 在我根据 Wine Quality 数据集创建的文件上使用它。我无法让它工作,我不知道如何前进。
Train 命令失败,诊断如下:
EXCEPTION occurred: The training criterion is not a number (NAN).
我将其解释为 lr
未生成有效数字。我只是不明白 SquareError
怎么会失败,以及如何解决这个问题。
有关信息,这是数据集在准备后的样子:
|features 7.400 0.700 0.000 1.900 |labels 5.000
|features 7.800 0.880 0.000 2.600 |labels 5.000
|features 7.800 0.760 0.040 2.300 |labels 5.000
|features 11.200 0.280 0.560 1.900 |labels 6.000
|features 7.400 0.700 0.000 1.900 |labels 5.000
我看不到任何明显有问题的数据问题。我是用CNTKTextFormatReader
读取数据的,可能是数据读取部分有问题,但没有调试我也不确定。
任何关于如何解决这个问题的建议都将不胜感激。
我有一个非常相似的入门想法,只是我修改了 Python 逻辑回归教程以创建一个线性回归示例。
我发现逻辑示例中指定的学习率太大,无法与线性回归所需的平方误差损失函数一起使用。因此,作为第一个建议,我建议您尝试将 learningRatesPerSample
降低到 0.001 或更小。
我快速 google 搜索了您看到的错误代码并返回 this issue,这也表明学习率可能是您的罪魁祸首。
如果您有兴趣,我在 Python 中写了一篇关于我的线性回归示例的 blog post。