当前位置:网站首页>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
)
边栏推荐
- NFT 交易市场主要使用 ETH 本位进行交易的局面是如何形成的?
- Pytorch training process was interrupted
- The ninth Operation Committee meeting of dragon lizard community was successfully held
- MySQL statistical skills: on duplicate key update usage
- 一次生产环境redis内存占用居高不下问题排查
- 分类TAB商品流多目标排序模型的演进
- 11.(地图数据篇)OSM数据如何下载使用
- Web API配置自定义路由
- 技术管理进阶——什么是管理者之体力、脑力、心力
- How did the situation that NFT trading market mainly uses eth standard for trading come into being?
猜你喜欢

13. (map data) conversion between Baidu coordinate (bd09), national survey of China coordinate (Mars coordinate, gcj02), and WGS84 coordinate system

【TFLite, ONNX, CoreML, TensorRT Export】

11.(地图数据篇)OSM数据如何下载使用

如何让你的产品越贵越好卖

COMSOL -- establishment of 3D graphics

中非 钻石副石怎么镶嵌,才能既安全又好看?

Cdga | six principles that data governance has to adhere to

【L1、L2、smooth L1三类损失函数】

NFT 交易市场主要使用 ETH 本位进行交易的局面是如何形成的?

【上采样方式-OpenCV插值】
随机推荐
以交互方式安装ESXi 6.0
高校毕业求职难?“百日千万”网络招聘活动解决你的难题
【yolov5.yaml解析】
如何让你的产品越贵越好卖
go语言学习笔记-初识Go语言
全网最全的新型数据库、多维表格平台盘点 Notion、FlowUs、Airtable、SeaTable、维格表 Vika、飞书多维表格、黑帕云、织信 Informat、语雀
COMSOL--三维随便画--扫掠
7 themes and 9 technology masters! Dragon Dragon lecture hall hard core live broadcast preview in July, see you tomorrow
简单解决redis cluster中从节点读取不了数据(error) MOVED
MySQL giant pit: update updates should be judged with caution by affecting the number of rows!!!
龙蜥社区第九次运营委员会会议顺利召开
Mysql统计技巧:ON DUPLICATE KEY UPDATE用法
Sklearn model sorting
【云原生 | Kubernetes篇】Ingress案例实战(十三)
CDGA|数据治理不得不坚持的六个原则
How to get a token from tokenstream based on Lucene 3.5.0
MySQL 巨坑:update 更新慎用影响行数做判断!!!
【主流Nivida显卡深度学习/强化学习/AI算力汇总】
汉诺塔问题思路的证明
How to protect user privacy without password authentication?