
第一个Pytorch案例总结Tensor数据转换训练模型泛化预测房价的模型训练完整代码如下importtorch# 把数据转换为PyTorch张量areatorch.tensor([[50],[60],[80],[100],[120]],dtypetorch.float32)# 房子大小pricetorch.tensor([[150],[180],[240],[300],[360]],dtypetorch.float32)# 房子价格# 定义模型1个输入1个输出modeltorch.nn.Linear(1,1)# 选择损失函数loss_fntorch.nn.MSELoss()# 选择优化器optimizertorch.optim.SGD(model.parameters(),lr0.0001)# 开始训练模型forepochinrange(1000):predmodel(area)# 加载原始数据。这里是房子大小lossloss_fn(pred,price)# 计算与目标数据即房子价格的误差optimizer.zero_grad()# 清空梯度loss.backward()# 进行反向传播以计算梯度optimizer.step()# 梯度下降更新参数ifepoch%1000:print(f第{epoch:4d}步, 误差:{loss.item():.4f})withtorch.no_grad():test_areatorch.tensor([[90.0]])# 任意输入一个数据pred_pricemodel(test_area)# 开始推理并返回结果print(f\n 面积 90 平米预测价格:{pred_price.item():.1f}万元)总结Tensor数据转换把需要训练的数据转换为Tensor这里使用的数据是数字可以直接带入。如果是非数字数据则需要先转换为数字比如文字一般需要先分词术语Tokenization训练模型我目前认知的模型训练核心就是把问题转换为张量后通过和参数计算得到结果后与标准答案对比求出误差再反向传播通过链式法则去降梯度最终是参数达到一个拟合的状态。训练步骤模型前向传播计算预测值用损失函数计算误差反向传播自动求梯度优化器按梯度更新参数迭代直到参数拟合数据泛化训练完成后模型对没见过的数据也能做出合理预测这就是泛化能力。比如代码中用 90 平米不在训练数据中测试模型依然能给出合理价格。任何有规律的数据都可以通过训练让模型参数拟合规律从而获得“举一反三”的能力。