首页 Paddle框架 帖子详情
v1版paddle输出问题
收藏
快速回复
Paddle框架 问答深度学习模型训练 8423 6
v1版paddle输出问题
收藏
快速回复
Paddle框架 问答深度学习模型训练 8423 6

v1版paddle,单机cpu版,已经train了2k多个batch_size了,为啥报这个错误呢?我输出变量名称是output,这里的out是读数据问题?还是训练过程问题?


I4021 60:38:19.824681 2320 TrainerInternal.cpp:165] Batch=2400 samples=38400 AvgCost=7.79625 CurrentCost=7.06948 Eval: classification_error=0.00887789 CurrentEval: classification_error=0.00827465
...................
I4021 60:41:42.349977 2320 TrainerInternal.cpp:165] Batch=2420 samples=38720 AvgCost=7.79441 CurrentCost=7.57395 Eval: classification_error=0.00888066 CurrentEval: classification_error=0.00921362
..F0421 06:42:05.695808 2320 Matrix.cpp:3795] # Check failed: out[j] > 0 && out[j] < 1.0
*** Check failure stack trace: ***
@ 0xafe2ed google::LogMessage::Fail()
@ 0xb01d9c google::LogMessage::SendToLog()
@ 0xafdde3 google::LogMessage::Flush()
@ 0xb032ae google::LogMessageFatal::~LogMessageFatal()
@ 0xe02b52 paddle::CpuMatrix::multiBinaryLabelCrossEntropy()
@ 0xc7a52f paddle::MultiBinaryLabelCrossEntropy::forwardImp()
@ 0xc76588 paddle::CostLayer::forward()
@ 0xb26896 paddle::NeuralNetwork::forward()
@ 0xb2a726 paddle::GradientMachine::forwardBackward()
@ 0xdabdba paddle::TrainerInternal::forwardBackwardBatch()
@ 0xdaa411 paddle::TrainerInternal::trainOneBatch()
@ 0xda5a26 paddle::Trainer::trainOneDataBatch()
@ 0xda5f2f paddle::Trainer::trainOnePass()
@ 0xda4652 paddle::Trainer::train()
@ 0xafa224 main
@ 0x318ae1ecdd (unknown)
@ 0xaf9e5d (unknown)


0
收藏
回复
全部评论(6)
时间顺序
A
AIStudio782998
#2 回复于2018-05

这里的out是multiBinaryLabelCrossEntropy的输入,报错信息,是值的范围有误。你这个cost的输入是什么层呢?用的什么激活函数?

0
回复
l
lucywsq
#3 回复于2018-05

up_proj = fc_layer(input=lstm_pool, size=512, act=ReluActivation(), bias_attr=bias_attr)
hidden = fc_layer(input=up_proj, size=256, act=TanhActivation(), bias_attr=bias_attr)
output = fc_layer(input=hidden, size=label_size, name='output',
bias_attr=bias_attr,
act=SoftmaxActivation())

Layer(
type = 'multi_binary_label_cross_entropy',
name = 'cost',
inputs = [Input('output'), Input('label')]
)

Evaluator(
inputs = ['output', 'label'],
type = 'classification_error',
name = 'classification_error',
classification_threshold = 0.5
)

Outputs('cost')

0
回复
A
AIStudio782998
#4 回复于2018-05

我理解这里loss的输入用SoftmaxActivation已经做了归一化了,为啥会导致输出范围有问题呢?
这里报错说输出out不在[0-1]之间,怎么产生的呢?

0
回复
A
AIStudio782998
#5 回复于2018-05

你用SoftmaxActivation时,可能一些维度出现了0,一些出现了1,导致check出错。

multi_binary_label_cross_entropy输入层通常接sigmoid激活函数,假设各个类别相互独立,每个维度上当做一个二分类,评估时和阈值比较。我们在接口里,也给了一些warning信息:

https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/trainer_config_helpers/layers.py#L6421

0
回复
l
lucywsq
#6 回复于2018-05

 1、这里换成SigmoidActivation这个可以吗?对结果影响大吗?
2、这个问题可能是输入数据导致的吗?如果是这样的话,我应该对数据数据进行怎样的检查呢?

0
回复
A
AIStudio782998
#7 回复于2018-05

1. 这个和算法、建模有关系,我理解是可以的。

2.从计算来看,上面check出错,也可能是数值异常,也可能和输入数据有关。如果是这样,感觉先要确定是否是数值异常

0
回复
需求/bug反馈?一键提issue告诉我们
发现bug?如果您知道修复办法,欢迎提pr直接参与建设飞桨~
在@后输入用户全名并按空格结束,可艾特全站任一用户