PyTorch-应该如何规范各个实例

问题描述 投票:0回答:1

我正在使用PyTorch来训练线性回归模型。我使用200个工程图的数据集训练了该模型,该工程图由几个有趣的特征表示。由于所有功能的使用规模不同,因此我决定对训练数据进行标准化,以获得更好的结果。与这些附图相关的标签表明了公众对其的评价。这一切进展顺利,并且我已经有了一个非常一致的模型,因为我只训练了200张图纸。我的以下代码可提供更多详细信息:

# Reading the data
data = pd.read_csv('dataset.csv')
drawings = paintings_frame.iloc[:n, 1:]
labels = paintings_frame.iloc[:n, 0]

# Making sure it's in the right format
drawings_numpy = drawings.values.astype(np.float32)
labels_numpy = labels.values.astype(np.float32)
labels_numpy = labels_numpy.reshape(-1,1)

# Normalizing
scaler = MinMaxScaler()
drawings_numpy = scaler.fit_transform(drawings_numpy)

# Converting to Tensor datasets
inputs = torch.tensor(drawings_numpy)
targets = torch.tensor(drawingss_numpy)

# Loading it into the model
input_size = inputs.shape[1]
output_size = 1
model = nn.Linear(input_size, output_size)

然后,我的代码继续定义损耗和优化器,并定义训练循环。但是我想这是这个问题最相关的部分。因此,在训练并保存了模型之后,我现在显然希望使用该模型来预测新给定工程图的标签。但是,如果我错了,请纠正我,在我看来,我必须对我现在提供给模型的任何图形进行归一化,以与原始训练集相同的方式进行预测,对吗?如果是这样,我不是该标准化工作原理的专家,但是我认为数据标准化的方式取决于数据的行为方式(例如,单个特征在数据集中可以具有的最小值和最大值)。如果是这种情况,我觉得我不能简单地通过简单调用与我的训练集相同的函数来规范我现在想要预测的单个实例。有人能够阐明这是如何工作的,或者我在推理中犯了一个错误吗?

python scikit-learn linear-regression normalization
1个回答
1
投票

您对此表示正确。缩放比例将取决于数据在给定功能中的行为方式,即在这种情况下为分布或仅为最小值/最大值。由于测试实例不能很好地表示基础分布,但是训练数据是(假定并且应该是),因此您可以保存定标器的参数以备将来使用。我建议仔细阅读MinMaxScaler和其他定标器的文档here

get_params方法返回您保存的参数,然后在推理过程中使用set_params获取相同的缩放器,而不是在测试数据上安装新的缩放器。

© www.soinside.com 2019 - 2024. All rights reserved.