首页 > 其他分享 >基于pytorch写一个三层神经网络,训练数据并导出模型

基于pytorch写一个三层神经网络,训练数据并导出模型

时间:2023-12-24 21:45:23浏览次数:23  
标签:一个三层 nn self torch 神经网络 pytorch input hidden size

 

import torch
import torch.nn as nn
import torch.optim as optim

# 定义三层神经网络
class ThreeLayerNN(nn.Module):
    def __init__(self, input_size, hidden_size1, hidden_size2, output_size):
        super(ThreeLayerNN, self).__init__()
        self.fc1 = nn.Linear(input_size, hidden_size1)
        self.fc2 = nn.Linear(hidden_size1, hidden_size2)
        self.fc3 = nn.Linear(hidden_size2, output_size)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = torch.relu(self.fc2(x))
        x = self.fc3(x)
        return x

# 创建模型实例
input_size = 10  # 输入层大小,根据实际情况调整
hidden_size1 = 32  # 第一层隐藏层大小,根据实际情况调整
hidden_size2 = 16  # 第二层隐藏层大小,根据实际情况调整
output_size = 2  # 输出层大小,根据实际情况调整
model = ThreeLayerNN(input_size, hidden_size1, hidden_size2, output_size)

# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()  # 根据实际情况选择损失函数
optimizer = optim.Adam(model.parameters(), lr=0.001)  # 使用Adam优化器,学习率可调

# 训练数据和标签(此处仅为示例,您需要根据实际情况提供数据)
X_train = torch.randn(100, input_size)  # 随机生成100个样本作为训练数据,输入维度为input_size
Y_train = torch.randint(0, output_size, (100,))  # 随机生成100个标签,输出维度为output_size

# 训练模型
num_epochs = 10  # 训练轮数,可根据实际情况调整
for epoch in range(num_epochs):
    # 前向传播
    outputs = model(X_train)
    loss = criterion(outputs, Y_train)
    
    # 反向传播和优化
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    
    if (epoch + 1) % 1 == 0:
        print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch + 1, num_epochs, loss.item()))

# 导出模型
torch.save(model.state_dict(), 'model.pth')

 

 

 

============

标签:一个三层,nn,self,torch,神经网络,pytorch,input,hidden,size
From: https://www.cnblogs.com/herd/p/17923723.html

相关文章

  • 人工神经网络
    人工神经网络是一种模拟人脑神经网络的机器学习技术,它由输入层、输出层和中间层(也称为隐蔽层)组成若干个节点组成一个层,若干个层组成一个人工神经网络。若一个人工神经网络中只有一个计算层,则称为单层神经网络神经网络输入层的节点数需要与输入数据的维度相匹配,输出层的节点数要与......
  • 一种简单的自编码器PyTorch代码实现
    1.引言对于许多新接触深度学习爱好者来说,玩AutoEncoder总是很有趣的,因为它具有简单的处理逻辑、简易的网络架构,方便可视化潜在的特征空间。在本文中,我将从头开始介绍一个简单的AutoEncoder模型,以及一些可视化潜在特征空间的一些的方法,以便使本文变得生动有趣。闲话少说,我们直接开......
  • 神经网络量化流程(第一讲TensorRT)
    TensorRT量化工具,支持PTQ和QAT量化基本流程:读取模型-》转化为IR进行图分析,做一些优化策略一、TensorRT量化模式TensorRT有两种量化模式:分别是implicitly以及explicitly量化,前者是隐式量化,在7.0及之前版本用的较多;后者显式量化在8.0版本后才完全支持,就是可以加载带有QDQ信息的模......
  • 深度学习的典型神经网络类型——卷积神经网络(CNN)
    1.CNN的定位CNN属于深度学习中的一类典型神经网络,是一种前馈神经网络,它采用的是SGD(随机梯度下降)算法,它的人工神经元可以相应一部分覆盖范围内的单元,在图像处理方面的表现十分出色。CNN在模式分类领域,因其避免了对图像的前期的预处理,所以它可以直接输入图像得到结果。2.CNN的构......
  • 神经网络基础-目录
    神经网络基础(11)机器学习、深度学习模型、模型训练神经网络基础(1)激活函数(1)sigmoid与二元逻辑分类的神经元模型神经网络基础(2)激活函数(2)sigmoid与多分类的神经网络模型神经网络基础(3)激活函数(3)SoftMax与多分类神经网络模型神经网络基础(4)逻辑分类标签与OneHot编码......
  • 神经网络可视化新工具:TorchExplorer
    TorchExplorer是一个交互式探索神经网络的可视化工具,他的主要功能如下:TorchExplorer是一款创新的人工智能工具,专为使用非常规神经网络架构的研究人员设计。可以在本地或者wandb中生成交互式Vega自定义图表,提供网络结构的模块级可视化。在左边的面板可以模块级方式展现神经网络架......
  • 电信行业客户流失预测:KNN、朴素贝叶斯、逻辑回归、LDA/QDA、随机森林、支持向量机、CA
    全文链接:https://tecdat.cn/?p=34635原文出处:拓端数据部落公众号分析师:LingziLu客户流失是一个存在于各个行业的严重问题,这一问题也同样受到众多电信服务提供商的关注——因为获得一个新客户的成本远远超过保留一个老客户的成本。因此,探索可能对客户流失产生重要影响的相关指......
  • Pytorch模型结构修改
    1.Var方差在pytorch中的差别:tlist=input.tolist()print(input)print(np.mean(tlist),np.var(tlist))print(torch.mean(input),torch.var(input))可以看到numpy与torch求出来的**Var**与**Mean**有差别原因:如下图为torch.var官网描述,其中存在一个矫正correctio......
  • pytorch——基于循环神经网络的情感分类
    任务目标基于给定数据集,进行数据预处理,搭建以LSTM为基本单元的模型,以Adam优化器对模型进行训练,使用训练后的模型进行预测并计算预测分类的准确率。数据集信息IMDB数据集是一个对电影评论标注为正向评论与负向评论的数据集,共有25000条文本数据作为训练集,25000条文本数据作为测试......
  • 神经网络优化篇:详解dropout 正则化(Dropout Regularization)
    dropout正则化除了\(L2\)正则化,还有一个非常实用的正则化方法——“Dropout(随机失活)”。假设在训练上图这样的神经网络,它存在过拟合,这就是dropout所要处理的,复制这个神经网络,dropout会遍历网络的每一层,并设置消除神经网络中节点的概率。假设网络中的每一层,每个节点都以抛硬币......