使用Tensorflow2和Pytorch实现线性回归
使用Tensorflow2和Pytorch实现线性回归
- 步骤
- Tensorflow2代码
- 效果
- Pytorch代码
- 效果
步骤
准备步骤:
1. 创建数据集
2. 设置超参数
3. 创建模型(函数)
4. 选择损失函数
5. 选择优化器
训练步骤:
6. 通过模型(函数)前向传播
7. 计算损失
8. 对超参数求梯度
9. 使用优化器利用梯度调整超参数
测试步骤:
10. 创建测试集
11. 通过模型得到预测结果
12. 画出散点图和曲线图
Tensorflow2代码
import tensorflow as tf
import numpy as np
from tensorflow.keras import Model
from tensorflow.keras.losses import MeanSquaredLogarithmicError
from tensorflow.keras.optimizers import SGD
import matplotlib.pyplot as plt#初始化参数
x=tf.reshape(tf.range(0,15,dtype=tf.float32),[15,1])
y=3*x+tf.constant(np.random.randn(15,1).astype(np.float32))+4
w=tf.Variable(np.random.rand(),dtype=tf.float32)
b=tf.Variable(np.random.rand(),dtype=tf.float32)print('x=',np.reshape(x,[1,15]),'\ny=',np.reshape(y,[1,15]),'\nw=',w,'\nb=',b)#创建模型
class My_model(Model):def __init__(self):super().__init__()# 构建一个线性层def linear(self,x):return w*x+bdef call(self,x):x=self.linear(x)return x#定义超参数
epoch=1500 #迭代次数
Ir=0.01 #学习率
model=My_model() #初始化模型
optimizer=SGD(learning_rate=Ir) #初始化优化器
losser=MeanSquaredLogarithmicError() #初始化损失函数
all_loss=[] #用于存储lossprint('--------------训练------------------------------------------------------------------')for i in range(1,epoch+1):with tf.GradientTape() as tape:cy = model(x) # 前向传播,获得预测值loss = losser(cy, y) #计算lossgrad=tape.gradient(loss,[w,b]) #求出w,b的梯度optimizer.apply_gradients(zip(grad,[w,b]))if i%10==0:all_loss.append(loss) #添加lossprint('epoch:',i,'loss:',loss) #打印loss值print('w:',w,'\nb:',b)
print('--------------测试------------------------------------------------------------------')
#画图
plt.rcParams['font.sans-serif']=['SimHei'] #载入字体
px=tf.reshape(tf.range(0,15,0.1,dtype=tf.float32),[150,1])
py=model(px)
plt.subplot(121)
plt.title('结果图')
plt.scatter(x,y)
plt.plot(px.numpy(),py.numpy())
plt.subplot(122)
plt.title('loss图')
plt.plot(px.numpy(),all_loss)
plt.show()
效果
效果如图:
随着迭代次数的增加,loss逐渐减小。
Pytorch代码
import torch as th
from torch.nn import Module,Linear,MSELoss
from torch.optim import SGD
import matplotlib.pyplot as plt#初始化参数
x=th.arange(0,15,1,dtype=th.float32).view(15,1)
y=3*x+th.randn(15,1,dtype=th.float32)+4
w=th.rand(1)
b=th.rand(1)
print('x=',x.view(1,15),'\ny=',y.view(1,15),'\nw=',w,'\nb=',b)
print('--------------训练------------------------------------------------------------------')
#创建模型
class My_model(Module):def __init__(self,input_shape,output_shape):super().__init__()self.linear=Linear(input_shape,output_shape)def forward(self,x):x=self.linear(x)return x#定义超参数
epoch=1500 #迭代次数
Ir=0.01 #学习率
model=My_model(1,1) #初始化模型
optimizer=SGD(model.parameters(),Ir) #初始化优化器
losser=MSELoss() #初始化损失函数
all_loss=[] #用于存储lossfor i in range(1,epoch+1):optimizer.zero_grad() #将优化器的梯度清零,防止叠加cy=model(x) #前向传播,获得预测值loss=losser(cy,y)loss.backward() #计算loss和反向传播optimizer.step() #更新权重if i%10==0:all_loss.append(loss)print('epoch:',i,'loss:',loss) #打印loss值print(optimizer.state)
print('--------------测试------------------------------------------------------------------')
#画图
plt.rcParams['font.sans-serif']=['SimHei'] #载入字体
px=th.arange(0,15,0.1,dtype=th.float32,requires_grad=False).view(150,1)
py=model(px)
plt.subplot(121)
plt.title('结果图')
plt.scatter(x,y)
plt.plot(px.detach().numpy(),py.detach().numpy())
plt.subplot(122)
plt.title('loss图')
plt.plot(px.detach().numpy(),all_loss)
plt.show()
效果
效果如下:
随着迭代次数的增加,loss逐渐减小。
使用Tensorflow2和Pytorch实现线性回归相关推荐
- pytorch:一维线性回归(二)
首先,这是对上一篇文章(pytorch:一维线性回归(一))的改进. 其次,为什么想要改进上一篇文章嘞? 答案:我使用这个写好的模型后,想着既然参数已经训练出来了,那么预测的时候,就只需要直接根据参数 ...
- (pytorch-深度学习系列)pytorch实现线性回归
pytorch实现线性回归 1. 实现线性回归前的准备 线性回归输出是一个连续值,因此适用于回归问题.回归问题在实际中很常见,如预测房屋价格.气温.销售额等连续值的问题. 与回归问题不同,分类问题中模 ...
- 深度学习day05 用Pytorch实现线性回归
深度学习day05 用Pytorch实现线性回归 代码模板 四个主要流程 代码中的一些重点 其他的优化器 代码模板 import torch# 步骤一:Prepare dataset # x,y是矩阵 ...
- L05_用pytorch实现线性回归
用pytorch实现线性回归 0.导入所需要的库 import torch 1.准备数据 x_data = torch.Tensor([[1],[2],[3]]) y_data = torch.Ten ...
- 深度学习练手项目(二)-----利用PyTorch进行线性回归
前言 深度学习并没有想象的那么难,甚至比有些传统的机器学习更简单.所用到的数学知识也不需要特别的高深.这篇文章将利用PyTorch来实现线性回归这个经典的模型. 一.线性回归理论 线性回归时利用数理统 ...
- 从零开始学Pytorch之线性回归
线性回归 主要内容包括: 线性回归的基本要素 线性回归模型从零开始的实现 线性回归模型使用pytorch的简洁实现 线性回归的基本要素 模型 为了简单起见,这里我们假设价格只取决于房屋状况的两个因素, ...
- pytorch 实现线性回归
实现线性回归 线性回归是机器学习入门知识,应用十分广泛.线性回归利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的,其表达形式为 y = w x + b + e y = wx+b+ ...
- PyTorch基础-线性回归以及非线性回归-02
线性回归 import torch import numpy as np import matplotlib.pyplot as plt %matplotlib inline from torch i ...
- pytorch:一维线性回归(一)
# -- coding:utf-8 -- import torch import numpy as np from torch import nn, optim import matplotlib.p ...
最新文章
- iOS常用第三方开源框架和优秀开发者博客等
- 为你的android App实现自签名的ssl证书
- powershell新建python文件_powershell如何打开Python
- poj 1860 Currency Exchange (最短路bellman_ford思想找正权环 最长路)
- 《Python Cookbook 3rd》笔记(3.14):计算当前月份的日期范围
- 视频流传输协议RTP/RTCP/RTSP/HTTP的区别
- 网络电话---异常处理01
- ASP.NET页面——页面事件
- 充满艺术范儿!艺术感在线的界面欣赏
- libusb获取usb设备的idVendor(vid),idProduct(pid),以及Serial Number
- git克隆权限_git clone权限被拒绝
- vue省市区三级联动(行政区划代码)
- WINDOWS10系统出现耳机插入没有声音,怎么解决?
- android仿微信播放视频播放器,vue DPlayer 仿微信朋友圈视频播放效果
- 51单片机led灯依次点亮
- sqli-labs(18-22)
- 什么是web app
- Sencha Cmd的简介
- HFDS 常用命令 fsck 查看文件信息和block位置信息
- camera 成像原理