PyTorch如何规范化单个实例

2024-04-24 11:21:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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)

然后,我的代码继续定义loss和optimizer,并定义训练循环。但我想这是这个问题最相关的部分。所以在训练并保存了我的模型之后,我现在显然想使用这个模型来预测新给定图形的标签。但是,如果我错了,请纠正我,在我看来,我必须规范化我现在提供给我的模型的任何图形,以做出预测,就像我对原始训练集所做的那样,对吗?如果是这样的话,我不是规范化工作原理的专家,但我假设数据的规范化方式取决于数据的行为(例如,单个特征在数据集中可以具有的最小值和最大值)。如果是这种情况,我觉得我不能简单地规范化我现在想要预测的单个实例,只需调用与我用于训练集相同的函数。有人能解释一下这到底是怎么回事吗,或者如果我在推理上犯了错误


Tags: csvthe数据代码模型numpy图形data
1条回答
网友
1楼 · 发布于 2024-04-24 11:21:11

你说得对。缩放将取决于数据在给定特征中的行为,即它的分布或在这种情况下的最小/最大值。
由于测试实例不是底层分布的良好表示,但列车数据是(假定的,并且应该是),因此保存定标器的参数以备将来使用。
我建议浏览MinMaxScaler和其他scaler的文档here

get_params方法返回保存的参数,然后在推断过程中使用set_params获得相同的定标器,而不是在测试数据上拟合新的定标器

相关问题 更多 >