当前位置:网站首页>Pytorch linear regression
Pytorch linear regression
2022-07-05 11:42:00 【My abyss, my abyss】
1、 Import table data
filename = "./data.csv"
data = pd.read_csv(filename)
features = data.iloc[:,1:]
labels = data.iloc[:,0]
2、 Turn into Tensor form
''' DataFrame ----> Tensor '''
features = torch.tensor(features.values, dtype=torch.float32)
labels = torch.tensor(labels.values, dtype=torch.float32)
labels = torch.reshape(labels,(-1,1))
3、 Generate iterators , Read data in batches
from torch.utils import data
def load_array(data_arrays , batch_size , is_train = True):
dataset = data.TensorDataset(*data_arrays)
return data.DataLoader(dataset , batch_size , shuffle = is_train)
batch_size = 10
data_iter = load_array((features,labels),batch_size)
next(iter(data_iter))
4、 Define neural networks
class LinearRegression(nn.Module):
def __init__(self):
super(LinearRegression, self).__init__()
self.layer1 = nn.Linear(2, 1)
def forward(self, x):
return self.layer1(x)
5、 Training network
model = LinearRegression()
gpu = torch.device('cuda')
mse_loss = nn.MSELoss()
optimizer = optim.Adam(model.parameters(), lr=0.003)
Loss = []
epochs = 1000
def train():
for i in range(epochs):
for X , y in data_iter:
y_hat = model(X) # Calculation model output results
loss = mse_loss(y_hat, y) # Loss function
loss_numpy = loss.detach().numpy()
Loss.append(loss_numpy)
optimizer.zero_grad() # Gradient clear
loss.backward() # Calculate weights
optimizer.step() # Modify weights
print(i, loss.item(), sep='\t')
train() # Training
for parameter in model.parameters():
print(parameter)
plt.plot(Loss)
6 The overall code
import matplotlib.pyplot as plt
import pandas as pd
import torch
from torch import nn, optim
from torch.utils import data
class LinearRegression (nn.Module):
def __init__(self, feature_nums):
super (LinearRegression, self).__init__ ()
self.layer1 = nn.Linear (feature_nums, 1)
def forward(self, x):
return self.layer1 (x)
def load_array(data_arrays, batch_size, is_train=True):
dataset = data.TensorDataset (*data_arrays)
return data.DataLoader (dataset, batch_size, shuffle=is_train)
def Linear_Regression_pytorch(filepath, feature_nums, batch_size, learning_rate, epochs):
filename = filepath
data = pd.read_csv (filename)
features = data.iloc[:, 1:]
labels = data.iloc[:, 0]
features = torch.tensor (features.values)
features = torch.tensor (features, dtype=torch.float32)
labels = torch.tensor (labels.values)
labels = torch.tensor (labels, dtype=torch.float32)
labels = torch.reshape (labels, (-1, 1))
batch_size = batch_size
data_iter = load_array ((features, labels), batch_size)
next (iter (data_iter))
model = LinearRegression (feature_nums)
gpu = torch.device ('cuda')
mse_loss = nn.MSELoss ()
optimizer = optim.Adam (model.parameters (), lr=learning_rate)
Loss = []
epochs = epochs
for i in range (epochs):
for X, y in data_iter:
y_hat = model (X) # Calculation model output results
loss = mse_loss (y_hat, y) # Loss function
loss_numpy = loss.detach ().numpy ()
optimizer.zero_grad () # Gradient clear
loss.backward () # Calculate weights
optimizer.step () # Modify weights
print (i, loss.item (), sep='\t')
Loss.append (loss.item ())
for parameter in model.parameters ():
print (parameter)
plt.plot (Loss)
plt.title("Loss")
plt.show ()
if __name__ == "__main__":
Linear_Regression_pytorch (filepath="data.csv",
feature_nums=2,
batch_size=10,
learning_rate=0.05,
epochs=1000
)
边栏推荐
- 基于Lucene3.5.0怎样从TokenStream获得Token
- 龙蜥社区第九次运营委员会会议顺利召开
- AutoCAD -- mask command, how to use CAD to locally enlarge drawings
- 网络五连鞭
- Is it difficult to apply for a job after graduation? "Hundreds of days and tens of millions" online recruitment activities to solve your problems
- 7.2 daily study 4
- Advanced technology management - what is the physical, mental and mental strength of managers
- 简单解决redis cluster中从节点读取不了数据(error) MOVED
- [office] eight usages of if function in Excel
- 以交互方式安装ESXi 6.0
猜你喜欢
Harbor镜像仓库搭建
石油化工企业安全生产智能化管控系统平台建设思考和建议
COMSOL -- 3D casual painting -- sweeping
【 YOLOv3中Loss部分计算】
Differences between IPv6 and IPv4 three departments including the office of network information technology promote IPv6 scale deployment
【爬虫】charles unknown错误
简单解决redis cluster中从节点读取不了数据(error) MOVED
redis主从模式
7.2 daily study 4
紫光展锐全球首个5G R17 IoT NTN卫星物联网上星实测完成
随机推荐
Evolution of multi-objective sorting model for classified tab commodity flow
871. Minimum Number of Refueling Stops
基于Lucene3.5.0怎样从TokenStream获得Token
SET XACT_ ABORT ON
【yolov5.yaml解析】
go语言学习笔记-初识Go语言
Empêcher le navigateur de reculer
What about SSL certificate errors? Solutions to common SSL certificate errors in browsers
龙蜥社区第九次运营委员会会议顺利召开
【上采样方式-OpenCV插值】
跨境电商是啥意思?主要是做什么的?业务模式有哪些?
Mongodb replica set
splunk配置163邮箱告警
《增长黑客》阅读笔记
Manage multiple instagram accounts and share anti Association tips
c#操作xml文件
【Win11 多用户同时登录远程桌面配置方法】
Advanced technology management - what is the physical, mental and mental strength of managers
Web API配置自定义路由
阻止浏览器后退操作