求助|线性回归|fit()函数|Target -0.663 is out of lower bound.
收藏
在做一个项目学习paddle,大概是用天气预报数据,预测发电机功率,功率是有负值的。
paddle版本是2.3
意思是label必须为正值?那么model.fit怎么做线性回归?可是我看到官方案例就有波士顿房价预测的例子,为什么label有负数就报错了
报错信息为
D:\study_software\annoconda\envs\fd\lib\site-packages\paddle\nn\functional\loss.py in cross_entropy(input, label, weight, ignore_index, reduction, soft_label, axis, use_softmax, name) 1718 if label_min < 0: 1719 raise ValueError("Target {} is out of lower bound.".format( -> 1720 label_min.item())) 1721 if label_max >= input.shape[axis]: 1722 raise ValueError("Target {} is out of upper bound.".format( ValueError: Target -0.9184724688529968 is out of lower bound.
代码:
class Regressor(paddle.nn.Layer): def __init__(self): super(Regressor, self).__init__() self.fc = paddle.nn.Linear(27, 1,) def forward(self, inputs): pred = self.fc(inputs) return pred model = Regressor() import paddle import paddle.nn as nn import paddle.vision.transforms as T from paddle.static import InputSpec device = paddle.set_device('cpu') # or 'gpu' net = nn.Sequential( nn.Linear(27, 1)) # inputs and labels are not required for dynamic graph. input = InputSpec([None, 27], 'float32', 'x') label = InputSpec([None, 1], 'float32', 'label') model = paddle.Model(net, input, label) optim = paddle.optimizer.SGD(learning_rate=1e-3, parameters=model.parameters()) model.prepare(optim, paddle.nn.CrossEntropyLoss(), paddle.metric.Accuracy()) model.fit(dataset, epochs=2, batch_size=32, verbose=1)
kbkb74741
已解决
2#
回复于2022-12
已解决: paddle.nn.CrossEntropyLoss()函数的问题,换成paddle.nn.MSELoss()就可以训练了。 至于为什么不能用交叉熵?个人暂时还没有细究,希望有大佬能够解答
1
收藏
请登录后评论
已解决:
paddle.nn.CrossEntropyLoss()函数的问题,换成paddle.nn.MSELoss()就可以训练了。
至于为什么不能用交叉熵?个人暂时还没有细究,希望有大佬能够解答