问题标签 [skorch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
843 浏览

python - PyToch Skorch 传递 3 维输入

我试图在使用 skorch 时在 PyTorch 中拟合模型。我的问题是,我的模型使用 LSTM 层,它需要 3d 输入,但我不知道如何正确传递输入。

将 2d 数组传递给fit()我从 PyTorch 收到预期 3d 输入的错误。如果传递一个 3d 数组,我会从fit()长度不一致的方法中得到错误(这对我来说都很有意义)。

下面的示例代码:

这是调用时的错误net.fit(X=inputArr2d, y=targetArr)

这是调用时的错误net.fit(X=inputArr3d, y=targetArr)

0 投票
0 回答
1054 浏览

python - 无法让 skorch 在 GPU 上运行

我的 skorch 神经网络 GridsearchCV 代码正在运行,但它似乎不在 GPU 上,所以速度很慢。

任何帮助表示赞赏。

每个 epoch 需要 13 秒。我知道 pytorch 在 GPU 上运行得更快。

代码:

0 投票
1 回答
532 浏览

pytorch - 从零开始的 Skorch 训练对象

我正在尝试使用 skorch 类在分类器上执行 GridSearch。我尝试使用 vanillaNeuralNetClassifier对象运行,但我还没有找到一种方法让 Adam 优化器只传递可训练的权重(我正在使用预训练的嵌入,我想让它们保持冻结状态)。如果模块被初始化,然后通过optimizer__params选项传递这些权重是可行的,但是模块需要一个未初始化的模型。有没有解决的办法?

上面的代码有效。但是,将 batch_size 设置为 64 时,我必须在每个批次上运行指定数量的 epoch 的模型!这不是我正在寻求的行为。如果有人能提出更好的方法来做到这一点,我将不胜感激。

我的另一个问题是子类化skorch.NeuralNet。我遇到了一个类似的问题:想办法只将可训练的权重传递给 Adam 优化器。下面的代码是我到目前为止所得到的。

初始化类给出了错误:

0 投票
2 回答
717 浏览

python - 为什么 Skorch 在每个 epoch 都显示 NAN?

我想基于 Skorch 的 Dataset 类创建自己的数据集类,因为我想区分分类列和连续列。这些分类列将通过模型中的嵌入层。结果很奇怪,因为它像这样显示 NAN:

你能帮我修一下吗?我正在使用来自这个 kaggle 的数据: 这里

0 投票
1 回答
2726 浏览

python - 如何从 skorch.NeuralNetClassifier.fit() 将参数传递给我的火炬 nn.module 的转发功能

我已经扩展nn.Module以实现我的网络,其转发功能是这样的......

我像这样初始化了一个skorch NeuralNetClassifier

现在,如果我调用net.fit(X, y, length=X_len)它会引发错误

根据文档 fit 函数需要一个fit_params字典,

并且源代码总是将我的参数发送到train_split显然我的关键字参数不会被识别的地方。

有没有办法将参数传递给我的转发函数?

0 投票
1 回答
2509 浏览

machine-learning - 将 tensorDataset 或 Dataloader 传递给 skorch

我想使用 skorch 在 Pytorch 中应用交叉验证,所以我准备了我的模型和我的 tensorDataset,它返回(图像、标题和标题长度),所以它有 X 和 Y,所以我不能在方法中设置 Y

但是当我尝试时出现错误:

ValueError:分层 CV 需要显式传递合适的 y

这是我的代码的一部分:

0 投票
1 回答
10622 浏览

python - TypeError: take(): argument 'index' (position 1) must be Tensor, not numpy.ndarray

我是 pytorch 的新手。我正在尝试进行交叉验证,并找到了 skorch 库,它允许用户将 sklearn 函数与 Torch 模型一起使用。所以,我定义了一个神经网络类:

到目前为止一切都很好,该函数返回可靠的结果,没有任何错误。当我尝试使用 GridSearchCV 函数时出现问题:

我收到以下错误:

怎么了?

0 投票
1 回答
586 浏览

skorch - Skorch:帮助为多个输出构建分类器

我试图通过翻译一个简单的 pytorch 模型来学习 skorch,该模型预测一组 MNIST 多位图片中包含的 2 位数字。这些图片包含 2 个重叠的数字,它们是输出标签 ( y)。我收到以下错误:

ValueError: Stratified CV requires explicitely passing a suitable y

我遵循“MNIST with SciKit-Learn and skorch”笔记本,并通过创建自定义get_loss函数应用了“来自转发的多个返回值”中概述的多个输出修复。

数据维度是:

  • X:(40000, 1, 4, 28)
  • 是:(40000, 2)

代码:

  1. 我需要修改y的格式吗?
  2. 我是否需要构建额外的自定义函数(预测)?
  3. 还有其他建议吗?
0 投票
3 回答
9890 浏览

neural-network - 为什么我的神经网络在第一个时期后仍停留在高损失值

我正在使用神经网络进行回归。对于 NN 来说,这应该是一项简单的任务,我有 10 个功能和 1 个输出要预测。我在项目中使用 pytorch,但我的模型学得不好。损失从一个非常高的值(40000)开始,然后在前 5-10 个时期之后,损失迅速下降到 6000-7000,然后不管我做什么,它都卡在那里。我什至尝试更改为 skorch 而不是 pytorch,以便我可以使用交叉验证功能,但这也无济于事。我尝试了不同的优化器并向网络添加了层和神经元,但这并没有帮助,它停留在 6000,这是一个非常高的损失值。我在这里做回归,我有 10 个特征,我试图预测一个连续值。这应该很容易做到,这就是为什么它让我更加困惑。

这是我的网络:我在这里尝试了从制作更复杂的架构(例如添加层和单元到批量标准化、更改激活等)的所有可能性。没有任何效果

这是我的设置:使用 skorch 比 pytorch 更容易。在这里,我还监控 R2 指标,并将 RMSE 作为自定义指标来监控模型的性能。我还为 Adam 尝试了 amsgrad,但这并没有帮助。

我还将输入值标准化。

我的输入具有以下形状:

输出的形状是:

我使用 128 作为我的 Batch_size,但我也尝试了其他值,如 32、64、512 甚至 1024。虽然标准化输出不是必需的,但我也尝试过,当我预测值时它不起作用,损失很高. 请有人帮助我,我将不胜感激每一个有用的建议。我还将添加我的训练和验证损失以及 epoch 上的指标的屏幕截图,以可视化损失在前 5 个 epoch 中是如何减少的,​​然后它永远保持在 6000 的值,这是一个非常高的损失值。

历元的损失和指标

0 投票
1 回答
122 浏览

python - 如何使用 Skorch 预测单个图像?

我刚刚使用 Skorch 创建了一个神经网络来检测图片上的飞机,并使用形状为 的火车数据集对其进行了训练(40000, 64, 64, 3)

然后我用(15000, 64, 64, 3).

现在我需要在 512*512 的图片上进行测试,所以我有了一个新的(30, 512, 512, 3).
所以我采用了一个滑动窗口代码,它允许我将图片分成 64*64 部分。

现在我希望能够预测每个 64*64 图像是否包含一架飞机,但我不知道该怎么做,因为net.predict()将数据集作为参数(arg : dim 4)