深度学习基础与线性回归实例

1、机器学习基础-线性回归

dffdb631fed54cf193a854e3e6607292.png

介绍:这是一个教育对收入影响的数据,从图像的走势来看,它是具有一个线性关系,即受教育年限越长收入越高,这样我们可以通直线来抽象出它们的关系。

接下来,我们将会介绍一些方法,分别是单变量线性回归算法、成本函数与损失函数、梯度下降算法。

首先要提到的是单变量线性回归算法,我们有这样一个函数f(x)=w*x+b;即x代表,f(x)代表收入我们使用f(x)这个函数来映射输入特征值和输出值。这个时候问题就转化为了,这条直线需要画在什么地方才合适,或者我们说w和b该取什么样的值呢?

然后是,成本函数与损失函数,使用均方差作为成本函数,也就是预测值和真实值之间的平方取均值,我们的优化目标(y代表实际的收入)是找到合适的w和b,使得(f(x)-y)**2越小越好,这样我们获得的直线会更好些。

最后是使用梯度下降算法,转而求解参数w,b,后面我会再着重讲解这里,大家只要明白这里会用到这个方法即可。

2、收入数据集读取与观察

现在,我们可以读取文件,使用matplotlib函数来绘制散点图。

下面是代码,我这里是用的是pandas,当然,如果你自己有能力也可以手写一个。

import torch

import pandas as pd
import numpy
import matplotlib.pyplot as plt

data=pd.read_csv("./dataset/Income1.csv")
data.info()  #返回这个文件的一些信息
print(data)
plt.scatter(data.Education,data.Income)
plt.xlabel("Education"),plt.ylabel("Income")
plt.show()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 30 entries, 0 to 29
Data columns (total 3 columns):
 #   Column      Non-Null Count  Dtype  
---  ------      --------------  -----  
 0   Unnamed: 0  30 non-null     int64  
 1   Education   30 non-null     float64
 2   Income      30 non-null     float64
dtypes: float64(2), int64(1)
memory usage: 848.0 bytes

 此为info方法获得的信息,下面是用matplotlib所画的散点图。

dffdb631fed54cf193a854e3e6607292.png

3、初始化模型、损失函数和优化方法

from torch import nn
import torch

import pandas as pd
import numpy
import matplotlib.pyplot as plt
import numpy as np

data=pd.read_csv("./dataset/Income1.csv")

# x=data.Education
# print(x)   #返回的是原来的列
# x=data.Education.values
# print(x)


# x=data.Education.values.reshape(-1,1).shape
# print(x)  #(30,1)指,30个数据
#
# x=data.Education.values.reshape(-1,1).astype(np.float64)
# print(x)

X=torch.from_numpy(data.Education.values.reshape(-1,1).astype(np.float64))
print(X)

Y=torch.from_numpy(data.Income.values.reshape(-1,1).astype(np.float64))
print(Y)

model=nn.Linear(1,1)  #out=w@input+b Linear表示随机生成一个权重(有w,b)
#这时就是指input和out都是1 ,w@input+b等价于 model(input)

#计算均方误差
loss_fn=nn.MSELoss()   #损失函数
#优化算法
opt=torch.optim.SGD(model.parameters(),lr=0.0001)

关于预处理部分,我简单说说,调用data.Education返回的是一个原来csv文件的那一列数据,这并不是我们想要的,所以在这里,我先将其转化为了numpy的数据类型ndarrary数组类型,用的是(data.Education.values)方式,我希望我的数据能够一个输入一个输出,所以又添加了reshape方法,将其shape变为(30,1),而torch.from_numpy显而易见是将numpy的ndarrary类型转化为pytorch所用的tensor类型。

这里对于X,Y处理过后,采用nn.Linear()方式随机生成一个权重,一输入一输出。对于损失函数我们可以用nn,MSELoss(),那么建立模型还有一步是进行优化,pytorch当然也提供了,只不过它是在torch当中,torch.optim.SGD(model.parameters(),lr=0.0001),model.parameters()返回需要优化参数,lr为学习速率,具体是什么,我会在后面讲到,这里只需要知道要用就对了。

4、模型训练与结果可视化

import pandas as pd
import numpy
import matplotlib.pyplot as plt
import numpy as np

from torch import nn
import torch

data=pd.read_csv("./dataset/Income1.csv")
X = torch.from_numpy(data.Education.values.reshape(-1, 1)).type(torch.FloatTensor)
# print(X)

Y = torch.from_numpy(data.Income.values.reshape(-1, 1)).type(torch.FloatTensor)
# print(Y)

model=nn.Linear(1,1)

#计算均方误差
loss_fn=nn.MSELoss()   #损失函数
#优化算法
opt = torch.optim.SGD(model.parameters(), lr=0.0001)

for epoch in range(5000):
    for x,y in zip(X,Y):
        y_pred = model(x)   #使用模型预测
        loss=loss_fn(y,y_pred)  #根据预测结果计算损失
        opt.zero_grad()  #把变量的梯度清零
        loss.backward() #反向传播算法,求解梯度
        opt.step()  #优化模型参数
print(model.weight,model.bias)
plt.scatter(data.Education,data.Income)
plt.xlabel("Education"),plt.ylabel("Income")
plt.plot(X.numpy(),model(X).data.numpy(),c='r')
plt.show()

打印weight,bias值 

tensor([[4.9757]], requires_grad=True) 
tensor([-28.3907], requires_grad=True)

较好的拟合了本次数据,那么这就是创建模型,训练模型和使用模型的过程。

5、资源分享

博客的相关代码与csv文件已上传至

GitHub:pytorch-Learning-and-Practice/Reference code/Deep Learning and Linear Regression at main · Auorui/pytorch-Learning-and-Practice (github.com)

如果大家觉得有用,在GitHub里面点击收藏即可。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: PyTorch深度学习简明实战电子版是一本帮助读者入门深度学习框架PyTorch的书籍。本书内容详细,分为四个部分,分别是:PyTorch初步、图像分类、目标检测以及深度强化学习,能够帮助读者系统地学习深度学习基础知识、理解和掌握PyTorch框架下的常用模型和算法,并能够在实践中应用这些模型和算法解决实际问题。 在PyTorch初步部分,本书介绍了PyTorch框架的基本使用方法和特点,包括如何创建和操作张量、构建计算图、定义和训练模型等方面的内容。图像分类部分介绍了卷积神经网络(CNN)的基础理论和实现方法,并使用PyTorch框架构建了一个CNN模型,用于解决图像分类问题。目标检测部分介绍了目标检测的基础知识和Mask R-CNN算法,并使用PyTorch实现了Mask R-CNN模型,应用于目标检测问题。深度强化学习部分介绍了深度强化学习的基本理论和实现方法,并使用PyTorch框架实现了深度Q网络(DQN)算法,应用于OpenAI Gym游戏环境中。 本书的内容涵盖了深度学习的多个方面,适合广大读者学习和实践。同时,本书使用Python语言和PyTorch框架,使得读者能够快速上手,掌握深度学习基础知识和PyTorch框架的用法。最后,本书提供了大量实例代码和练习题,帮助读者深入理解和应用所学知识。 ### 回答2: PyTorch深度学习简明实战电子版是一本介绍PyTorch深度学习框架的实战教程。本书分为三个部分,第一部分是基础知识,包括PyTorch的基本操作、张量、自动求导、线性回归模型等内容;第二部分介绍深度学习的常用模型,包括卷积神经网络、循环神经网络、生成对抗网络等;第三部分是应用案例,包括图像分类、目标检测、自然语言处理等。 书中的案例非常实用,深入浅出地介绍了每个模型的实现原理和使用方法。而且,书中使用的数据集是实际的数据集,例如MNIST手写数字识别、CIFAR-10图像分类等,能够充分体现PyTorch在实际应用中的优势。 本书的特色在于其简洁明了的讲解方式,将深度学习框架PyTorch的基本操作及其应用形象生动地展现出来。此外,本书还提供了丰富的代码实现、调试和性能优化技巧,为读者提供了一系列实用的工具来应对实际问题。 总之,PyTorch深度学习简明实战电子版是一本非常实用的教材,不仅能够帮助读者快速掌握PyTorch的各项功能,还能够让读者在实践中深入理解深度学习的实现原理。该书对于人工智能相关行业的从业者、学生以及对深度学习感兴趣的读者都是一本值得阅读的好书。 ### 回答3: PyTorch深度学习简明实战电子版是一本针对深度学习初学者推出的实战教程,主要原因是PyTorch是一个非常适合于初学者的深度学习框架,其将深度学习任务分解成容易理解和实现的步骤。此书包含了丰富的实际应用案例,以及详细的实现代码和运行结果分析。通过阅读本书,读者可以学习到深度学习的核心概念,如神经网络、梯度下降、损失函数等,并且能够了解如何使用PyTorch中的各种工具来构建和训练深度神经网络。本书还着重强调了PyTorch的动态图机制,这一点与其他深度学习框架的静态图机制不同,动态图机制允许我们更加直观地进行模型设计和调试。在本书中,作者还涉及了一些高级技术,如循环神经网络、深度卷积网络等,从而为读者提供更加全面的知识体系。总之,PyTorch深度学习简明实战电子版是一本值得推荐的实战教程,既适合初学者入门,也可以帮助专业人士深入了解PyTorch的实际应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏天是冰红茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值