PyTorch学习(二)

线性回归

今天看了关于线性回归的内容,说实话还是不懂,书上给了一大堆公式也只能看懂公式之间的推导,实际要怎么使用这些公式还是不明白。。。总之先记一下部分内容吧。
线性模型就是在给定的多个点,找到一个函数使得此函数线与各数据点之间的距离总体上呈最接近的状态,简单的说就是在一堆数据点中找到一条直线尽可能与这些点接近。
线性模型表示为:
f ( x ) = w 1 x 1 + w 2 x 2 + w 3 x 3 + . . . + w d x d + b f(x) = w_1x_1 + w_2x_2 + w_3x_3 + ...+w_dx_d + b f(x)=w1x1+w2x2+w3x3+...+wdxd+b
向量形式为:
f ( x ) = w T + b f(x) = w^T + b f(x)=wT+b
线性回归要做的就是不断的调整w和b。

  1. 一维线性回归
    一维线性回归中数据集只有一种属性,即w只有一种值。
    为了调整w和b,我们需要有一个指标,这里选择使用f(x)与y的距离差值,均方误差
    L o s s = ∑ i = 1 m ( f ( x i ) − y i ) 2 Loss = \sum_{i=1}^{m}(f(x_i)-y_i)^2 Loss=i=1m(f(xi)yi)2
    通过这个公式便可以计算w与b。
  2. 多维线性回归
    多维线性回归就是有d个属性的数据集,他依然使用均方误差作为评判标准,不过需要有d个这样的公式(我自己的理解,有错误希望大佬指出),也可以合在一起形成一个矩阵公式。
    尝试花了一下矩阵结果失败了,直接最后吧
    线性回归模型写成:
    f ( x i ) = x i T ( X T X ) − 1 X T y f(x_i)=x_i^T(X^TX)^-1X^Ty f(xi)=xiT(XTX)1XTy

PyTorch进行一维线性回归

x_train = np.array([[1,1],[2,2],[3,3]], dtype = np.float32)
y_train = np.array([[4,4],[5,5],[6,6]], dtype = np.float32)

x_train = torch.from_numpy(x_train)#转化为张量
y_train = torch.from_numpy(y_train)

#线性回归模型
class LinearRegression(nn.Module):
	def __init__(self):
		super(LinearRegression, self).__init__()
		self.linear = nn.linear(1, 1)#输入输出均为一维
	
	def forward(self, x):
		out = self.linear(x)
		return out
model = LinearRegression()

#定义损失函数,优化函数
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=le-3)

#模型训练
num_epochs = 1000
for epoch in range(num_epoche):
	inputs = Variable(x_train)#转化为变量
	target = Variable(y_train)
	
	out = model(inputs)#通过模型得到前向传播的结果
	loss = criterion(out, target)#损失函数
	optimzer.zero_grad()#归零梯度
	loss.backward()#反向传播
	optimizer.step()#更新参数

多维线性回归的实现与一维相似,只是模块定义时不再是的输入1维数据。倒是书上训练数据的产生还是看不懂,这矩阵是怎么来的,真实函数又是啥。。。怀疑我是不是少看了一章QAQ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于使用PyTorch进行分类问题的深度学习,你可以按照以下步骤进行: 1. 数据准备:首先,你需要准备好你的训练数据和测试数据。确保数据已经被正确标记,并且已经分为训练集和测试集。 2. 数据加载:使用PyTorch的DataLoader模块加载数据集。可以使用自定义的Dataset类来加载数据,并使用DataLoader将其转化为可供模型使用的小批量数据。 3. 搭建模型:定义一个神经网络模型。可以使用PyTorch提供的nn.Module类来创建自己的模型。对于分类问题,通常使用一个带有一层输出的全连接层。 4. 定义损失函数:选择合适的损失函数来度量模型预测结果与真实标签之间的差异。对于分类问题,可以使用元交叉熵损失函数(Binary Cross Entropy Loss)。 5. 选择优化器:选择一个优化器来更新模型参数。常见的优化器包括随机梯度下降(SGD)、Adam、RMSprop等。根据需求选择合适的优化器。 6. 训练模型:使用训练数据对模型进行训练。通过迭代训练数据的小批量样本,计算损失并反向传播更新模型参数。 7. 测试模型:使用测试数据评估模型的性能。计算模型在测试数据上的准确率、精确率、召回率等指标。 8. 调整超参数:根据模型在测试集上的性能,可以调整模型的超参数(如学习率、批量大小等)以获得更好的性能。 9. 预测新样本:使用训练好的模型对新样本进行预测。将新样本输入模型中,得到预测结果。 以上是一个基本的流程,你可以根据自己的需求进行相应的调整和扩展。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值