求助|线性回归|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()就可以训练了。
至于为什么不能用交叉熵?个人暂时还没有细究,希望有大佬能够解答