引言

本文将详细介绍如何使用自建数据库实现简单的深层神经网络模型。

首先载入相关库:

import torch
import torch.nn as nn
from torch.utils.data import DataLoader,Dataset
import numpy as np
import torch.optim as optim
import xlrd
import matplotlib as mpl
import matplotlib.pyplot as plt #导入画图库
from sklearn import preprocessing

设定自己的数据库:

class Mydataset(Dataset):def __init__(self,filepath):datalist=[]data = xlrd.open_workbook(filepath, encoding_override='utf-8')table = data.sheets()[0]  # 选定表sheet1 或sheet2  0表示sheet1 1表示sheet2nrows = table.nrows  # 获取行号ncols = table.ncols  # 获取列号'''def __init__(self,filepath):xy = np.loadtxt(filepath,delimiter=' ',dtype=np.float)self.x_data = torch.from_numpy(data_scaler.fit_transform(datalist[:,:-1]))self.y_data = torch.from_numpy(xy[:,[-1]])'''for i in range(0, nrows):  # 第0行为表头alldata = table.row_values(i)  # 循环输出excel表中每一行,即所有数据datalist.append(alldata)  # 创建datalist = np.array(datalist,dtype=np.float32) #将获取的数据全部转换成数组浮点数self.len = datalist.shape[0]self.x_data = torch.from_numpy(data_scaler.fit_transform(datalist[:,:-1])) #将特征输入归一化self.y_data = torch.from_numpy(datalist[:,[-1]])print("数据已录入")def __getitem__(self, index):return self.x_data[index],self.y_data[index]def __len__(self):return self.len

看完不会你揍我!!Pytorch利用文本数据建立自己的数据集- Dataset Dataloader详解 附案例_阿进olipe的博客-CSDN博客

Dataloader加载数据:

#1、使用Dataset 建立自己的数据库
Mydata=Mydataset(Work_inpath)
'''
print(Mydata.x_data)
print(Mydata.y_data)
'''
#2、使用DataLoader 构建训练加载
train_loader=DataLoader(dataset=Mydata,batch_size=20,shuffle=True,num_workers=0)

神经网络通道的建立:

class Model(nn.Module):def __init__(self, n_chansl=4):super().__init__()self.n_chansl = n_chanslself.fc1 = nn.Linear(n_chansl, 16)self.fc2 = nn.Linear(16, 8)self.fc3 = nn.Linear(8,3)self.fc4 = nn.Linear(3, 1)def forward(self,x):out = x.view(-1,self.n_chansl)out = torch.relu(self.fc1(out))out = torch.relu(self.fc2(out))out = torch.relu(self.fc3(out))out = torch.relu(self.fc4(out))return out

其中

def __init__(self, n_chansl=4):

表示建立神经网络初始层,输入特征为4 。

def forward(self,x):

表示建立向前传递规则。

定义训练规则:

def trainingmodel(n_epoch):for epoch in range(n_epoch+1):for data in train_loader: #enumerate(train_loader)函数表示遍历train_loader中的所有函数'1、准备数据'inputs, label = data'2、向前传播'y_pred = model(inputs)loss = criterion(y_pred,label)print(epoch,loss.item())epoch_list.append(epoch)loss_list.append(loss)'3、向后传播损失函数'optimizer.zero_grad()loss.backward()'4、更新权重参数'optimizer.step() #优化器向前def trainingmodel(n_epoch):for epoch in range(n_epoch+1):for data in train_loader: #enumerate(train_loader)函数表示遍历train_loader中的所有函数'1、准备数据'inputs, label = data'2、向前传播'y_pred = model(inputs)loss = criterion(y_pred,label)print(epoch,loss.item())epoch_list.append(epoch)loss_list.append(loss)'3、向后传播损失函数'optimizer.zero_grad()loss.backward()'4、更新权重参数'optimizer.step() #优化器向前

MSE损失值绘图:

#以下两行用来正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
mpl.rcParams['legend.fontsize'] = 30  #线段标签 字体大小#定义画布大小
fig = plt.figure(figsize=(20,20),dpi=72)  #创造一个画布
plt.xlabel('训练步数',size=20,labelpad=20)
plt.ylabel('损失值',size=20,labelpad=20)
plt.plot(epoch_list,new_loss_list,label='MSE损失值',color='blue',linestyle='-',marker='o') #画点plt.scatter()
plt.legend()
plt.show()

效果展示:

完整代码:

import torch
import torch.nn as nn
from torch.utils.data import DataLoader,Dataset
import numpy as np
import torch.optim as optim
import xlrd
import matplotlib as mpl
import matplotlib.pyplot as plt #导入画图库
from sklearn import preprocessingdevice=(torch.device('cuda') if torch.cuda.is_available()else torch.device('cpu'))
Work_inpath = r'C:\Users\Administrator\Desktop\2.xlsx'
new_loss_list = []
data_scaler = preprocessing.MinMaxScaler(feature_range = (0,1))class Mydataset(Dataset):def __init__(self,filepath):datalist=[]data = xlrd.open_workbook(filepath, encoding_override='utf-8')table = data.sheets()[0]  # 选定表sheet1 或sheet2  0表示sheet1 1表示sheet2nrows = table.nrows  # 获取行号ncols = table.ncols  # 获取列号'''def __init__(self,filepath):xy = np.loadtxt(filepath,delimiter=' ',dtype=np.float)self.x_data = torch.from_numpy(data_scaler.fit_transform(datalist[:,:-1]))self.y_data = torch.from_numpy(xy[:,[-1]])'''for i in range(0, nrows):  # 第0行为表头alldata = table.row_values(i)  # 循环输出excel表中每一行,即所有数据datalist.append(alldata)  # 创建datalist = np.array(datalist,dtype=np.float32) #将获取的数据全部转换成数组浮点数self.len = datalist.shape[0]self.x_data = torch.from_numpy(data_scaler.fit_transform(datalist[:,:-1])) #将特征输入归一化self.y_data = torch.from_numpy((datalist[:,[-1]]))print('数据录入成功')def __getitem__(self, index):return self.x_data[index],self.y_data[index]def __len__(self):return self.len#1、使用Dataset 建立自己的数据库
Mydata=Mydataset(Work_inpath)
'''
print(Mydata.x_data)
print(Mydata.y_data)
'''
#2、使用DataLoader 构建训练加载
train_loader=DataLoader(dataset=Mydata,batch_size=20,shuffle=True,num_workers=0)class Model(nn.Module):def __init__(self, n_chansl=4):super().__init__()self.n_chansl = n_chanslself.fc1 = nn.Linear(n_chansl, 16)self.fc2 = nn.Linear(16, 8)self.fc3 = nn.Linear(8,3)self.fc4 = nn.Linear(3, 1)def forward(self,x):out = x.view(-1,self.n_chansl)out = torch.relu(self.fc1(out))out = torch.relu(self.fc2(out))out = torch.relu(self.fc3(out))out = torch.relu(self.fc4(out))return outmodel = Model()
criterion = torch.nn.MSELoss()  #定义损失函数
optimizer = torch.optim.SGD(model.parameters(),lr=0.001)epoch_list = []
loss_list = []
def trainingmodel(n_epoch):for epoch in range(n_epoch+1):for data in train_loader: #enumerate(train_loader)函数表示遍历train_loader中的所有函数'1、准备数据'inputs, label = data'2、向前传播'y_pred = model(inputs)loss = criterion(y_pred,label)print(epoch,loss.item())epoch_list.append(epoch)loss_list.append(loss)'3、向后传播损失函数'optimizer.zero_grad()loss.backward()'4、更新权重参数'optimizer.step() #优化器向前
train_model=trainingmodel(10000)
print(epoch_list)
for i in loss_list:new_loss_list.append(float(i))
print(new_loss_list)#以下两行用来正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
mpl.rcParams['legend.fontsize'] = 30  #线段标签 字体大小#定义画布大小
fig = plt.figure(figsize=(20,20),dpi=72)  #创造一个画布
plt.xlabel('训练步数',size=20,labelpad=20)
plt.ylabel('损失值',size=20,labelpad=20)
plt.plot(epoch_list,new_loss_list,label='MSE损失值',color='blue',linestyle='-',marker='o') #画点plt.scatter()
plt.legend()
plt.show()

创作不易,可不可以请您动动宝贵的手指给我顶个赞呢??

非常感谢,祝您有个愉快的一天!!

基于Pytorch实现自建数据库的深度神经网络模型案例相关推荐

  1. 【火炉炼AI】深度学习003-构建并训练深度神经网络模型

    [火炉炼AI]深度学习003-构建并训练深度神经网络模型 (本文所使用的Python库和版本号: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotl ...

  2. 深度神经网络模型压缩与加速研究综述

    深度神经网络模型压缩与加速研究综述 文章目录 深度神经网络模型压缩与加速研究综述 前言 介绍 PARAMETER PRUNING AND SHARING A. quantization and bin ...

  3. 用于异常检测的深度神经网络模型融合

    用于异常检测的深度神经网络模型融合 在当今的数字时代,网络安全至关重要,因为全球数十亿台计算机通过网络连接.近年来,网络攻击的数量大幅增加.因此,网络威胁检测旨在通过观察一段时间内的流量数据来检测这些 ...

  4. Keras之CNN:基于Keras利用cv2建立训练存储卷积神经网络模型(2+1)并调用摄像头进行实时人脸识别

    Keras之CNN:基于Keras利用cv2建立训练存储卷积神经网络模型(2+1)并调用摄像头进行实时人脸识别 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 # -*- codin ...

  5. 深度神经网络模型剪枝

    深度神经网络模型剪枝 神经网络剪枝 Neural Network Pruning 下面是我对剪枝的一点点理解,如有理解不到位,请大家指正 ▶剪枝只是将模型中权重比较小,对输出影响不大的神经元参数置0, ...

  6. Rich Caruana:压缩深度神经网络模型让你兼得可解释性与准确性!

    来源: 微软研究院AI头条 本文共1757字,建议阅读5分钟. 本文讲述了在机器学习的世界里,准确性和可解释性总是不可兼得:复杂的模型准确但令人费解,简单的模型容易理解也容易出错. [ 导读 ]微软研 ...

  7. 深度神经网络模型压缩方法总结

    新的卷积计算方法 这种是直接提出新的卷积计算方式,从而减少参数,达到压缩模型的效果,例如SqueezedNet,mobileNet 1. SqueezeNet: AlexNet-level accur ...

  8. 六、25个深度神经网络模型

    文章目录 1. 引言 1. 引言 在深度学习十分火热的今天,不时会涌现出各种新型的人工神经网络,想要实时了解这些新型神经网络的架构还真是不容易.光是知道各式各样的神经网络模型缩写(如:DCIGN.Bi ...

  9. 深度神经网络模型有哪些,深度神经网络预测模型

    神经网络.深度学习.机器学习是什么?有什么区别和联系? 深度学习是由深层神经网络+机器学习造出来的词.深度最早出现在deepbeliefnetwork(深度(层)置信网络).其出现使得沉寂多年的神经网 ...

  10. 当前深度神经网络模型压缩和加速都有哪些方法?

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

最新文章

  1. Android视图状态及重绘流程分析,带你一步步深入了解View(三)
  2. SSL与HTTPS,HTTP有什么联系
  3. 微商相册一直显示服务器偷懒,【小程序】微商个人相册多端小程序源码以及安装...
  4. 给定一个由n个数字组成的数组,请检查是否存在重复项
  5. 浅谈OpenGL、OpenGL ES
  6. 异常处理汇总-服务器系列
  7. 数据库事务隔离级别转
  8. JWT(JSON Web Token)的基本原理
  9. Linux内核启动:setup_arch
  10. Oracle 备份与恢复学习笔记(14)
  11. OpenGL 坐标变换(2)
  12. 论文阅读-目标检测(2019)-CenterNet:目标检测转化为关键点检测及其属性回归
  13. 数字图像处理(19): 边缘检测算子(Roberts算子、Prewitt算子、Sobel算子 和 Laplacian算子)
  14. 【3dmax千千问】初学3dmax插件神器第20课:3dmax渲染教程|效果图大师和疯狂模渲大师怎么使用3dmax软件自带的渲染器去设计并渲染三维效果图场景的3dmax模型?
  15. 出现这种情况是什么原因呢?
  16. 2022 互联网中秋月饼大赏,腾讯送火腿,字节寓意圆满,你最钟爱哪款呢?(文末有抽奖)...
  17. 详细讲解BM字符串搜索算法
  18. 报错已加载插件:fastestmirror, langpacksLoading mirror speeds from cached hostfileThere are no enabled repos
  19. 线性代数:通过向量组个数和维数判别向量组线性相关性
  20. Visio画UML类图

热门文章

  1. 解决你的R语言乱码问题
  2. PhalAPI学习笔记 ——— 第三章细致讲解使用PSR-4规范自定义你的命名空间
  3. dell服务器安装系统加载驱动,DELL服务器使用U盘加载驱动安装Win2003.doc
  4. 免费网站流量统计服务汇总
  5. 超级计算机有什么特点,计算机的特点有哪些
  6. span标签的间距问题
  7. Coursera | 免费上Coursera-助学金申请流程
  8. 【转帖】用友和金蝶应避免重蹈Oracle覆辙
  9. Python编程——实现屏幕广告语的滚动
  10. colorbox 自适应 高度