当前位置:网站首页>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
)
边栏推荐
- How can China Africa diamond accessory stones be inlaid to be safe and beautiful?
- 一次生产环境redis内存占用居高不下问题排查
- 简单解决redis cluster中从节点读取不了数据(error) MOVED
- How does redis implement multiple zones?
- Proof of the thinking of Hanoi Tower problem
- 解决readObjectStart: expect { or n, but found N, error found in #1 byte of ...||..., bigger context ..
- 【主流Nivida显卡深度学习/强化学习/AI算力汇总】
- [office] eight usages of if function in Excel
- [crawler] bugs encountered by wasm
- Mongodb replica set
猜你喜欢
COMSOL -- establishment of 3D graphics
How to make your products as expensive as possible
无线WIFI学习型8路发射遥控模块
Cdga | six principles that data governance has to adhere to
How can China Africa diamond accessory stones be inlaid to be safe and beautiful?
【SingleShotMultiBoxDetector(SSD,单步多框目标检测)】
如何让你的产品越贵越好卖
11. (map data section) how to download and use OSM data
龙蜥社区第九次运营委员会会议顺利召开
《增长黑客》阅读笔记
随机推荐
CDGA|数据治理不得不坚持的六个原则
阻止瀏覽器後退操作
Technology sharing | common interface protocol analysis
ZCMU--1390: 队列问题(1)
Programmers are involved and maintain industry competitiveness
《看完就懂系列》15个方法教你玩转字符串
Solve readobjectstart: expect {or N, but found n, error found in 1 byte of
Open3D 网格(曲面)赋色
Implementation of array hash function in PHP
I used Kaitian platform to build an urban epidemic prevention policy inquiry system [Kaitian apaas battle]
Web API配置自定义路由
Install esxi 6.0 interactively
How does redis implement multiple zones?
【Win11 多用户同时登录远程桌面配置方法】
COMSOL -- establishment of geometric model -- establishment of two-dimensional graphics
AutoCAD -- mask command, how to use CAD to locally enlarge drawings
[crawler] bugs encountered by wasm
redis主从模式
Idea set the number of open file windows
项目总结笔记系列 wsTax KT Session2 代码分析