python - 将 PyCaret 与神经网络一起用于回归问题的问题
问题描述
我有一个回归问题,想将 PyCaret 与神经网络一起使用。我基于链接中的文章:https ://towardsdatascience.com/pycaret-skorch-build-pytorch-neural-networks-using-minimal-code-57079e197f33 。如您所见,本文将 PyCaret 与神经网络一起用于分类问题。我在转换以下代码时遇到问题:
将 torch.nn 导入为 nn
从 skorch 导入 NeuralNetRegressor
从 sklearn.pipeline 导入管道
从 skorch.helper 导入 DataFrameTransformer
导入 torch.nn.functional 作为 F
类网络(nn.Module):
def __init__(self, num_inputs=12, num_units_d1=200, num_units_d2=100):
super(Net, self).__init__()
self.dense0 = nn.Linear(num_inputs, num_units_d1)
self.nonlin = nn.ReLU()
self.dropout = nn.Dropout(0.5)
self.dense1 = nn.Linear(num_units_d1, num_units_d2)
self.output = nn.Linear(num_units_d2, 2)
self.softmax = nn.Softmax(dim=-1)
def forward(self, X, **kwargs):
X = self.nonlin(self.dense0(X))
X = self.dropout(X)
X = self.nonlin(self.dense1(X))
X = self.softmax(self.output(X))
return X
,### 包括这个,因为它会抛出目标的 dtypes 错误
**类 customNLLLoss(nn.Module):
标准 = nn.NLLLoss()
def __init__(self):
super().__init__()
def forward(self, logits, target):
return self.criterion(logits, target.long())**
净 = 神经网络分类器(
module=Net,
criterion=customNLLLoss, ### Including this as it throws an error of dtypes for target
max_epochs=30,
lr=0.1,
batch_size=32,
train_split=None
)
,### 参考:https ://github.com/pycaret/pycaret/issues/700#issuecomment-879700610
nn_pipe = 管道(
[("transform", DataFrameTransformer()),
("net", net),]
)
我相信问题出在customNLLLoss class 的 def forward 中。如何将此代码转换为回归问题?
当我运行代码时,出现以下错误:
ValueError:目标数据不应该是一维的,而是二维的,第二维的大小与回归目标的数量(通常为 1)相同。请将您的目标数据重塑为二维(例如 y = y.reshape(-1, 1).
解决方案
推荐阅读
- javascript - 如何仅在鼠标悬停时在树节点的右端显示一个小图标
- android - [[11.0.4,11.0.4]] 的各种其他库正在请求库 com.google.android.gms:play-services-location,但解析为 16.0.0
- javascript - 错误:找不到相对于目录的预设“”
- python - 使用 for/while 循环在数字列表中查找最大值
- node.js - 创建同步的类别和频道
- java - 过滤时列表中的 Nullpointer 异常 - Java
- android - 无法解决:play-services-tasks-license
- sql - 需要存储过程从这两个表中计算
- javascript - 如何添加弹出窗口
- c - 如何让我的灯光相对于我的场景(在立方体中)保持固定?