当前位置: 首页 > wzjs >正文

北京网站建设公司兴田德润专业宜昌市住房和城乡建设局网站

北京网站建设公司兴田德润专业,宜昌市住房和城乡建设局网站,哪个网站做自考题目免费,网站制作行业1.回归网络 波士顿房价预测模型搭建 波士顿房价数据集下载链接:百度网盘 请输入提取码 提取码: 5279 导入所需包 import torch import numpy as np import re 读取数据 ff open(housing.data).readlines() data [] for item in ff:out re.sub(r"\s{2,}…

1.回归网络

波士顿房价预测模型搭建

波士顿房价数据集下载链接:百度网盘 请输入提取码 提取码: 5279 

  • 导入所需包
import torch
import numpy as np
import re
  • 读取数据
ff = open('housing.data').readlines()
data = []
for item in ff:out = re.sub(r"\s{2,}"," ",item).strip() #通过正则表达式去除所有空格data.append(out.split(" ")) #将每一个数据以空格为分隔符进行分割
data = np.array(data).astype(np.float64) #将数据转换为浮点型
Y = data[:,-1] #将最后一列作为标签
X = data[:,0:-1] #将前n-1列作为特征
X_train = X[0:496,...] #将前496行作为训练集
Y_train = Y[0:496,...] #将前496行作为训练集
X_test = X[496:,...] #将剩余行作为测试集
Y_test = Y[496:,...] #将剩余行作为测试集
print('X_train.shape:',X_train.shape)
print('Y_train.shape:',Y_train.shape)
print('X_test.shape:',X_test.shape)
print('Y_test.shape:',Y_test.shape)

        结果为: 

X_train.shape: (496, 13)
Y_train.shape: (496,)
X_test.shape: (10, 13)
Y_test.shape: (10,)
  •  定义回归网络模型
class Net(torch.nn.Module): #继承torch.nn.Module#初始化def __init__(self,n_feature,n_output):super(Net,self).__init__() #继承__init__功能self.predict = torch.nn.Linear(n_features, n_output) #定义线性回归模型#定义前向传播def forward(self,x):out = self.predict(x)return out
net = Net(13,1) #定义网络
  • 定义损失函数
loss_func = torch.nn.MSELoss() #定义均方误差损失函数
  • 定义优化器
optimizer = torch.optim.SGD(net.parameters(),lr=0.01) #定义随机梯度下降优化器,学习率为0.01
  • 训练模型
for i in range(1000):x_data = torch.tensor(X_train,dtype=torch.float32) #将训练集转换为张量y_data = torch.tensor(Y_train,dtype=torch.float32) #将训练集转换为张量pred = net.forward(x_data) #前向传播pred = torch.squeeze(pred) #将输出转换为一维张量loss = loss_func(pred,y_data) * 0.001 #计算损失optimizer.zero_grad() #清空梯度loss.backward() #反向传播optimizer.step() #更新参数print("ite:{},loss:{}".format(i,loss))print('前10个预测值:',pred[0:10])print('前10个真实值:',y_data[0:10])

        最后一轮打印的结果

ite:999,loss:0.08831662684679031
前10个预测值:tensor([22.8808, 18.8566, 20.0100, 20.6557, 20.1837, 19.5407, 23.6228, 21.4776,20.9730, 21.6817], grad_fn=<SliceBackward0>)
前10个真实值:tensor([24.0000, 21.6000, 34.7000, 33.4000, 36.2000, 28.7000, 22.9000, 27.1000,16.5000, 18.9000])
  • 测试模型
for i in range(1000):x_data = torch.tensor(X_test,dtype=torch.float32) #将测试集转换为张量y_data = torch.tensor(Y_test,dtype=torch.float32) #将测试集转换为张量pred = net.forward(x_data) #前向传播pred = torch.squeeze(pred) #将输出转换为一维张量loss = loss_func(pred,y_data) * 0.001 #计算损失print("ite:{},loss:{}".format(i,loss))

        测试最后一轮的结果

ite:999,loss:0.11018833518028259
  • 模型保存
torch.save(net,"houseModel.pkl")
  • 整体代码
import torch
import numpy as np
import re
#读取及处理房价数据
ff = open('housing.data').readlines()
data = []
for item in ff:out = re.sub(r"\s{2,}"," ",item).strip() #通过正则表达式去除所有空格data.append(out.split(" ")) #将每一个数据以空格为分隔符进行分割
data = np.array(data).astype(np.float64) #将数据转换为浮点型
Y = data[:,-1] #将最后一列作为标签
X = data[:,0:-1] #将前n-1列作为特征
X_train = X[0:496,...] #将前496行作为训练集
Y_train = Y[0:496,...] #将前496行作为训练集
X_test = X[496:,...] #将剩余行作为测试集
Y_test = Y[496:,...] #将剩余行作为测试集
#定义回归网络模型
class Net(torch.nn.Module): #继承torch.nn.Module#初始化def __init__(self,n_feature,n_output):super(Net,self).__init__() #继承__init__功能self.predict = torch.nn.Linear(n_feature, n_output) #定义线性回归模型#定义前向传播def forward(self,x):out = self.predict(x)return out
net = Net(13,1) #定义网络
#定义损失函数
loss_func = torch.nn.MSELoss() #定义均方误差损失函数
#定义优化器
optimizer = torch.optim.SGD(net.parameters(),lr=0.0001) #定义随机梯度下降优化器,学习率为0.0001
#模型训练
for i in range(1000):x_data = torch.tensor(X_train,dtype=torch.float32) #将训练集转换为张量y_data = torch.tensor(Y_train,dtype=torch.float32) #将训练集转换为张量pred = net.forward(x_data) #前向传播pred = torch.squeeze(pred) #将输出转换为一维张量loss = loss_func(pred,y_data) * 0.001 #计算损失optimizer.zero_grad() #清空梯度loss.backward() #反向传播optimizer.step() #更新参数
#模型测试
for i in range(1000):x_data = torch.tensor(X_test,dtype=torch.float32) #将测试集转换为张量y_data = torch.tensor(Y_test,dtype=torch.float32) #将测试集转换为张量pred = net.forward(x_data) #前向传播pred = torch.squeeze(pred) #将输出转换为一维张量loss = loss_func(pred,y_data) * 0.001 #计算损失
torch.save(net,"houseModel.pkl")
  • 使用保存的模型
import torch
import numpy as np
import re
#定义回归网络模型
class Net(torch.nn.Module): #继承torch.nn.Module#初始化def __init__(self,n_feature,n_output):super(Net,self).__init__() #继承__init__功能self.predict = torch.nn.Linear(n_feature, n_output) #定义线性回归模型#定义前向传播def forward(self,x):out = self.predict(x)return out
#读取及处理房价数据
ff = open('housing.data').readlines()
data = []
for item in ff:out = re.sub(r"\s{2,}"," ",item).strip() #通过正则表达式去除所有空格data.append(out.split(" ")) #将每一个数据以空格为分隔符进行分割
data = np.array(data).astype(np.float64) #将数据转换为浮点型
Y = data[:,-1] #将最后一列作为标签
X = data[:,0:-1] #将前n-1列作为特征
X_train = X[0:496,...] #将前496行作为训练集
Y_train = Y[0:496,...] #将前496行作为训练集
X_test = X[496:,...] #将剩余行作为测试集
Y_test = Y[496:,...] #将剩余行作为测试集
net = torch.load("houseModel.pkl", weights_only=False) #加载模型,加载模型时需要指定weights_only=False,这样 PyTorch 就会加载整个模型(包括结构和权重)
loss_func = torch.nn.MSELoss() #定义均方误差损失函数
x_data = torch.tensor(X_test,dtype=torch.float32) #将测试集转换为张量
y_data = torch.tensor(Y_test,dtype=torch.float32) #将测试集转换为张量
pred = net.forward(x_data) #前向传播
pred = torch.squeeze(pred) #将输出转换为一维张量
loss = loss_func(pred,y_data) * 0.001 #计算损失
print("loss:{}".format(loss))

        运行结果为:

loss:0.028316091746091843

1.分类网络

手写数字分类

  • 导入所需包
import torch
import torchvision.datasets as datasets # 导入手写数字数据集
import torchvision.transforms as transforms #数据预处理
import torch.utils.data as data_utils #数据处理
  • 数据处理
train_data = datasets.MNIST(root="",train=True,transform=transforms.ToTensor(),download=True) #下载数据集,并加载训练集
test_data = datasets.MNIST(root="",train=False,transform=transforms.ToTensor(),download=False) #并加载测试集
train_loader = data_utils.DataLoader(dataset=train_data,batch_size=64,shuffle=True) #将数据集分成64个batch,并打乱顺序
test_loader = data_utils.DataLoader(dataset=test_data,batch_size=64,shuffle=True) #将数据集分成64个batch,并打乱顺序
  • 定义分类网络模型
class CNN(torch.nn.Module):def __init__(self):super(CNN,self).__init__()self.conv = torch.nn.Sequential( #定义卷积ngtorch.nn.Conv2d(1,32,kernel_size=5,padding=2), #输入通道数为1,输出通道数为32,卷积核大小为5,填充为1torch.nn.BatchNorm2d(32), #批归一化torch.nn.ReLU(), #激活函数torch.nn.MaxPool2d(2) #最大池化)self.fc = torch.nn.Linear(14*14*32,10) #定义全连接层def forward(self,x):out =self.conv(x) #卷积层out = out.view(out.size()[0],-1) #将输出展平out = self.fc(out) #全连接层return out
cnn =CNN()
  • 定义损失函数
loss_fn = torch.nn.CrossEntropyLoss() #交叉熵损失函数
  • 定义优化器
optimizer = torch.optim.Adam(cnn.parameters(),lr=0.001) #Adam优化器
  • 训练模型
#训练模型
for epoch in range(10): #训练10个epoch  for i,(images,labels) in enumerate(train_loader): #遍历训练集output = cnn(images) #将输入数据传入模型loss = loss_fn(output,labels) #计算损失optimizer.zero_grad() #清空梯度loss.backward() #反向传播optimizer.step() #更新参数print("epoch is {},ite is{}/{},loss is {}".format(epoch+1,i,len(train_data)//64,loss.item()))

        训练中其中一条训练结果

epoch is 2,ite is41/937,loss is 0.013103657402098179
  • 测试模型 

        因为训练时间太久,这里就不放训练结果了

loss_test = 0
accuracy = 0
for epoch in range(10):for i,(images,labels) in enumerate(test_loader):outputs = cnn(images)loss_test += loss_fn(outputs,labels) _,pred = output.max(1)accuracy += (pred == labels).sum().item()accuracy = accuracy / len(test_data)loss_test = loss_test / (len(test_data)//64)print("epoch is {},loss is {},accuracy is {}".format(epoch+1,loss_test.item(),accuracy))
  • 模型保存
torch.save(cnn,"handwriteNumber.pkl")
  •  整体代码
import torch
import torchvision.datasets as datasets # 导入手写数字数据集
import torchvision.transforms as transforms #数据预处理
import torch.utils.data as data_utils #数据处理
#数据处理
train_data = datasets.MNIST(root="",train=True,transform=transforms.ToTensor(),download=True) #下载数据集,并加载训练集
test_data = datasets.MNIST(root="",train=False,transform=transforms.ToTensor(),download=False) #并加载测试集
train_loader = data_utils.DataLoader(dataset=train_data,batch_size=64,shuffle=True) #将数据集分成64个batch,并打乱顺序
test_loader = data_utils.DataLoader(dataset=test_data,batch_size=64,shuffle=True) #将数据集分成64个batch,并打乱顺序
#网络模型搭建
class CNN(torch.nn.Module):def __init__(self):super(CNN,self).__init__()self.conv = torch.nn.Sequential( #定义卷积ngtorch.nn.Conv2d(1,32,kernel_size=5,padding=2), #输入通道数为1,输出通道数为32,卷积核大小为5,填充为1torch.nn.BatchNorm2d(32), #批归一化torch.nn.ReLU(), #激活函数torch.nn.MaxPool2d(2) #最大池化)self.fc = torch.nn.Linear(14*14*32,10) #定义全连接层def forward(self,x):out =self.conv(x) #卷积层out = out.view(out.size()[0],-1) #将输出展平out = self.fc(out) #全连接层return out
cnn =CNN()
#定义损失函数
loss_fn = torch.nn.CrossEntropyLoss() #交叉熵损失函数
#定义优化器
optimizer = torch.optim.Adam(cnn.parameters(),lr=0.001) #Adam优化器
#训练模型
for epoch in range(10): #训练10个epoch  for i,(images,labels) in enumerate(train_loader): #遍历训练集output = cnn(images) #将输入数据传入模型loss = loss_fn(output,labels) #计算损失optimizer.zero_grad() #清空梯度loss.backward() #反向传播optimizer.step() #更新参数print("epoch is {},ite is{}/{},loss is {}".format(epoch+1,i,len(train_data)//64,loss.item()))
print('############################')
#测试模型 
loss_test = 0
accuracy = 0
for epoch in range(10):for i,(images,labels) in enumerate(test_loader):outputs = cnn(images)loss_test += loss_fn(outputs,labels) _,pred = output.max(1)accuracy += (pred == labels).sum().item()accuracy = accuracy / len(test_data)loss_test = loss_test / (len(test_data)//64)print("epoch is {},loss is {},accuracy is {}".format(epoch+1,loss_test.item(),accuracy))
#模型保存
torch.save(cnn,"handwriteNumber.pkl")

知识点为听课总结笔记,课程为B站“2025最新整合!公认B站讲解最强【PyTorch】入门到进阶教程,从环境配置到算法原理再到代码实战逐一解读,比自学效果强得多!”:2025最新整合!公认B站讲解最强【PyTorch】入门到进阶教程,从环境配置到算法原理再到代码实战逐一解读,比自学效果强得多!_哔哩哔哩_bilibili


文章转载自:

http://j7OT6WD0.qbLcm.cn
http://zdW586je.qbLcm.cn
http://3vsUZGk5.qbLcm.cn
http://uocUqCCm.qbLcm.cn
http://zMRVMGot.qbLcm.cn
http://pODBy7v0.qbLcm.cn
http://BeHHayDn.qbLcm.cn
http://iyboLJI1.qbLcm.cn
http://XVvBeDd1.qbLcm.cn
http://8KHkCZ82.qbLcm.cn
http://ZC2LeGRe.qbLcm.cn
http://IJIA0sW8.qbLcm.cn
http://68pcnH82.qbLcm.cn
http://3u0CydMq.qbLcm.cn
http://3QzKY3RA.qbLcm.cn
http://IXUnnnYd.qbLcm.cn
http://gYioWj39.qbLcm.cn
http://1mcDsdNQ.qbLcm.cn
http://yRrEUXyi.qbLcm.cn
http://u91r3YHC.qbLcm.cn
http://JDuERJce.qbLcm.cn
http://PlpIq94Z.qbLcm.cn
http://dQotECfl.qbLcm.cn
http://ysvkxtNK.qbLcm.cn
http://gi3Bvv8M.qbLcm.cn
http://3GN2CwMu.qbLcm.cn
http://e1cQ0tBD.qbLcm.cn
http://tctJMA8u.qbLcm.cn
http://seyOcUkK.qbLcm.cn
http://ZYArIL3e.qbLcm.cn
http://www.dtcms.com/wzjs/680617.html

相关文章:

  • 温州网站优化搜索wordpress 比价
  • 菏泽北京网站建设电子商务网站功能设计
  • vue做网站的实例中山医疗网站建设
  • 免费空间赞郑州网站制作专业乐云seo
  • 佛山市网站建设分站企业网页设计制作网站教程
  • 中国建设监理协会网站投稿百度对wordpress
  • 做游戏网站多钱湖北标书设计制作
  • 中国建设银行官网站企业年金做详情页比较好的网站
  • wordpress访问网站很慢做一个论坛网站要多少钱
  • 创建qq网站网站开发工程师任职资格
  • 网站开发英文翻译zencart 网站入侵
  • 购物网站开发的基本介绍开发公司空置房物业费会计科目
  • 专业的定制型网站建设更改网站伪静态
  • 建筑做地图分析的网站国外订房网站怎么和做
  • 做平面设计必知的网站网站设计有哪些公司
  • 做的网站要花钱吗广东新闻联播2011
  • 做网站维护工作难吗整站排名服务
  • 网站可以做的活动推广域名空间做网站
  • 网站如何做实名验证企业网站建设方案渠道
  • 阿里云做网站需要些什么上海营销网站建设
  • 搜索网站建设推广优化做行业分析的网站
  • 网站改版思路北京海淀的保险公司
  • 前端手机网站wordpress 函数教程
  • 网站域名证书软路由做网站
  • 做p2p网站的公司织梦dedecms网站简略标题shorttitle的使用方法
  • 长白山网站学做管理平台wordpress主题 评论
  • 中国旅游网站排名高清图片素材网站免费下载
  • 网站的请求服务做优先级网站中图片加水印
  • 一般网站字体大小高端模版网站
  • 网站通知发送邮件推广策略的概念