用PyTorch构建神经网络,详细

PyTorch深度学习实战(3)——使用PyTorch构建神经网络 PyTorch 是一个用于构建深度神经网络的库,具有灵活性和可扩展性,可以轻松自定义模型。在本节中,我们将使用 PyTorch 库构建神经网络,利用张量对象操作和梯度值计算更新网络权重,并利用 Sequential 类简化网络构建过程,最后还介绍了如何使用 save、load 方法保存和加载模型,以节省模型训练时间。 阅读详情

在本文章中,我们将使用PyTorch从头开始实现一个简单的神经网络。

注:阅读本文之前,最好可以了解神经网络的工作原理。

虽然有很多库可以用于深度学习,但我最喜欢 PyTorch。作为一名python 程序员,我喜欢 PyTorch 的 python 行为是原因之一。它主要使用了python 的风格和能力,这是很容易理解和使用。

在其核心,PyTorch提供两个主要特性:

  1. 一个类似于numpy 的n 维张量,但可以在 gpu 上运行;

  2. 自动区分建立和训练神经网络。

什么是神经网络?

神经网络是一组可以模仿人类大脑,并被设计用来识别模式的算法。这些网络是由接近神经元的单个部分构成的,通常称为单元或简称为“神经元”每个单元有一定数量的加权输入。这些加权的输入总和在一起(一个线性组合) ,然后通过一个激活函数来得到单位输出。

神经网络中的节点类型:

  1. 输入单元ーー把外界的资讯输入网络,统称为「输入层」。这些节点不执行任何计算,它们只是将信息传递给隐藏节点;

  2. 隐藏单元ーー这些节点与外界没有任何直接联系。它们执行计算并将信息从 Input 节点传输到 Output 节点。一个隐藏节点的集合形成了一个“隐藏层”。虽然前馈网络只有一个输入层和一个输出层,但是它可以有零个或多个隐藏层;

  3. 输出单元ーー输出节点统称为「输出层」 ,负责计算及将网络上的资讯传送到外界。

每一层包含一个或多个节点。

码字不易废话两句:有需要python学习资料的或者有技术问题交流 “点击”即可

建立神经网络

PyTorch 提供了一个模块 nn,使得构建网络更加简单。我们将看到如何建立一个有784个输入,256个隐藏单元,10个输出单元和一个softmax 输出单元的神经网络。

from torch import nnclass Network(nn.Module):
    def __init__(self):
        super().__init__()
        
        # Inputs to hidden layer linear transformation
        self.hidden = nn.Linear(784, 256)
        # Output layer, 10 units - one for each digit
        self.output = nn.Linear(256, 10)
        
        # Define sigmoid activation and softmax output
        self.sigmoid = nn.Sigmoid()
        self.softmax = nn.Softmax(dim=1)
        
    def forward(self, x):
        # Pass the input tensor through each of our operations
        x = self.hidden(x)
        x = self.sigmoid(x)
        x = self.output(x)
        x = self.softmax(x)
        
        return x

注:Softmax激活函数函数,也称为 softargmax 或normalizd exponential 函数,可以讲一个含任意实数的K维向量z“压缩”至另一个K维实向量f(z)中,使得每一个元素的范围都在(0, 1)之间,且所有元素的和为1。

在这里插入图片描述

让我们把这一行一行地过一遍。

class Network(nn.Module):

这里我们继承了 nn.Module。与super ().__init__()结合将创建一个可以提供许多有用的方法和属性的类。当你为你的网络创建一个类的时候通常都会从nn.Module进行继承。类的名称可以自定义。

self.hidden = nn.Linear(784, 256)

这一行创建了一个线性映射模块,xW + b,包含784个输入和256个输出,并将其赋值给 self.hidden。该模块自动创建的权重和偏差,我们将在forward函数中使用,并且可以通过net.hidden.weight和 net.hidden.bias 从创建的网络中访问权重和偏差。

self.output = nn.Linear(256, 10)

同样地,这也创建了另一个有256个输入和10个输出的线性映射。

self.sigmoid = nn.Sigmoid()
self.softmax = nn.Softmax(dim=1)

这里我定义了用于sigmoid 激活和 softmax 输出的操作。并设置dim = 1 在 nnSoftmax (dim = 1)对某一维度的列进行softmax运算。

def forward(self, x):

用nn.Module 创建的 PyTorch网络必须定义了一个forward方法,它接受一个张量 x,并将其传递给在__init__ 方法中定义的操作。

x = self.hidden(x)
x = self.sigmoid(x)
x = self.output(x)
x = self.softmax(x)

这里输入张量 x 通过每个操作重新赋值给x。我们可以看到,输入张量通过隐藏层,然后是 Sigmod 函数,然后是输出层,最后是Softmax函数。您在这里将变量命名为什么并不重要,只要操作的输入和输出符合您想要构建的网络体系结构即可。在__init__方法中定义事物的顺序并不重要,但是您需要在forward 方法中正确排列操作的顺序。

# Create the network and look at it's text representation
model = Network()
model

利用神经网络建立神经网络

PyTorch提供了一种构建类似于张量按顺序通过操作的方便方法——nn.Sequential。我们也可以使用这个来建立等价的网络:

# Hyperparameters for our network
input_size = 784
hidden_sizes = [128, 64]
output_size = 10
# Build a feed-forward network
model = nn.Sequential(nn.Linear(input_size, hidden_sizes[0]),
                      nn.ReLU(),
                      nn.Linear(hidden_sizes[0], hidden_sizes[1]),
                      nn.ReLU(),
                      nn.Linear(hidden_sizes[1], output_size),
                      nn.Softmax(dim=1))
print(model)

这里我们的模型是一样的,784个输入单元,一个有128个单元的隐藏层,ReLU激活函数,64个单元的隐藏层,另一个ReLU函数,然后带有10个单元的输出层,Softmax层。

您还可以传入OrderedDict 来命名各个层和操作,而不是使用增量整数。注意,字典键必须是唯一的,因此每个操作必须有不同的名称。

from collections import OrderedDict
model = nn.Sequential(OrderedDict([
                      ('fc1', nn.Linear(input_size, hidden_sizes[0])),
                      ('relu1', nn.ReLU()),
                      ('fc2', nn.Linear(hidden_sizes[0], hidden_sizes[1])),
                      ('relu2', nn.ReLU()),
                      ('output', nn.Linear(hidden_sizes[1], output_size)),
                      ('softmax', nn.Softmax(dim=1))]))

model

现在,您可以通过整数或名称访问层,如下所示:

print(model[0])
print(model.fc1)

以上就是小编今天为大家带来的内容,小编本身就是一名python开发工程师,我自己花了三天时间整理了一套python学习教程,从最基础的python脚本到web开发,爬虫,数据分析,数据可视化,机器学习,等,这些资料有想要的小伙伴 :" 点击 " 即可领取

PyTorch实战(2)——使用PyTorch构建神经网络 在本节中,我们使用 PyTorch 在简单数据集上构建了一个神经网络,训练神经网络来映射输入和输出,并通过执行反向传播来更新权重值以最小化损失值,并利用 Sequential 类简化网络构建过程;介绍了获取网络中间值的常用方法,以及如何使用 save、load 方法保存和加载模型,以避免再次训练模型。 阅读详情

相关推荐

【Pytorch】2024 Pytorch基础入门教程(完整详细版)

Pytorch是torch的python版本,是由Facebook开源的神经网络框架,专门针对 GPU 加速的深度神经网络(DNN)编程。Torch 是一个经典的对多维矩阵数据进行操作的张量(tensor )库,在机器学习和其他数学密集型应用有广泛应用。与Tensorflow的静态计算图不同,pytorch的计算图是动态的,可以根据计算需要实时改变计算图。但由于Torch语言采用 Lua,导致在国内一直很小众,并逐渐被支持 Python 的 Tensorflow 抢走用户。

优快云已停更,感兴趣关注https://aaronzijingcai.github.io/ 27万+

PyTorch全映射层Linear卷积层Conv1d与Conv2d

class torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True) 一维卷积层,输入的尺度是(N, C_in,L),输出尺度( N,C_out,L_out)的计算方式: out(Ni,Coutj)=bias(Coutj)+∑k=0Cin...

lance~crazy 3901

PyTorch全连接神经网络构建与训练指南

在深度学习领域,全连接神经网络(Fully Connected Neural Networks)是构建各种复杂模型的基础。它们由多层节点组成,每层的神经元都与前一层以及后一层的每一个神经元相连。尽管全连接网络在某些应用中可能不如卷积神经网络(CNNs)或递归神经网络(RNNs)表现得那么出色,但它们在理解和学习人工神经网络的原理方面仍然扮演着关键角色。全连接层是实现全连接网络的基本组件,它通过一系列加权求和和非线性激活函数来处理输入数据。

weixin_33072399的博客 1037

使用Pytorch快速搭建神经网络模型(附详细注释和讲解)

0 前言 代码参考了知乎上“10分钟快速入门PyTorch”系列,并且附上了详细的注释和函数讲解。从今天这篇博文开始,我将和大家一起踏上Pytorch的学习道路,希望有问题可以指出! 1 数据读入 torchvision.datasets里面有很多数据类型,里面有官网处理好的数据,比如我们要使用的MNIST数据集(手写数字数据集),可以通过torchvision.datasets.MNIST()来得到: import torch from torch import nn from torch.utils.d

双鸭山•克里菲斯•北方孤星之堕 1万+

Mac版Burp Suite专业版破解与汉化完整指南

在Web安全测试领域,Java应用程序的许可证验证机制与本地化实现是常见的技术课题。其原理通常涉及Java Agent技术,通过在JVM启动时动态修改字节码,实现对软件授权状态的校验逻辑进行拦截与重写,从而绕过官方验证。同时,软件界面的国际化(i18n)与本地化(l10n)则依赖于资源文件的替换与加载。从技术价值角度看,深入理解这些机制不仅能满足特定场景下的工具定制需求,更能加深对Java安全机制、软件保护与逆向工程的理解。在实际的工程实践中,安全研究人员与开发者常面临功能受限或语言障碍的挑战,尤其是在渗透

weixin_29327525的博客 1028

概率论 知识图谱 + 实战案例解析

本文通过构建概率论知识图谱,系统梳理了从随机试验、概率、条件概率到随机变量与分布的核心概念及其内在联系。结合朴素贝叶斯分类器和蒙特卡洛模拟等实战案例,深入解析了条件概率、独立性及大数定律等理论如何应用于机器学习与实际问题求解,旨在帮助读者建立结构化思维,将理论有效转化为解决实际问题的能力。

weixin_29051193的博客 265

Pytorch实现神经网络(详细过程附代码)

pytorch实现神经网络(有详细代码)

weixin_44516623的博客 5016

【软件安装系列】Ubuntu+mysql5.7.27+Jira8.3.1+邮箱服务器配置+Confluence6.15.7安装经验和采坑总结

文章目录一、软件准备(百度云易被吞,就不放了)1.1 官网下载的新鲜的Jira和Confluence1.2 linux的jdk一份1.3 Jira和Confluence的破解程序或者破解包一份1.4 java的连接器一份二、安装过程1--java环境配置2.1 将下载下来的jdk包解压在/usr/local/java目录中2.2 写入环境变量三、安装过程2--mysql5.7.27环境配置3.1 ...

xiaosha_的博客 6888

使用PyTorch构建神经网络(详细步骤讲解+注释版) 03 模型评价与准确率提升

上一节我们已经成功训练了一个神经网络模型本文的使用的部分类方法为前述文章定义所得,如果希望运行完整代码建议同时查看上一篇文章或文末留言发你完整代码。

Hello Word 1779

《网络安全自学教程》- MySQL脱库原理和步骤

MySQL脱库,脱库的原理,怎么脱库,脱库的步骤,一库三表六字段

wangyuxiang946的博客 1万+

FM1288回声消除芯片调试方案 - 综述

专栏文章概览

优快云mianfeixiazai001的博客 1713

基于pytorch的BP神经网络模型构建

小伙伴好,最近想要认真学习一波pytorch,打算通过pytorch去构建一系列的网络模型,包括CNN、LSTM、Transform等,后续都会进行搭建。一个不断学习的小菜鸡,也希望有问题小伙伴能指出。 MINST数据集是手写数字的识别,图片尺寸为(28,28,1),标签为数字的类别。 1、加载数据 本文这次主要是对MNIST数据集进行测试。利用pytorch加载数据的方法如下: # 利用datasets中可加载不同的数据集,本次选用MNIST数据集 from torchvision i.

qq_37320084的博客 5388

KingSCADA实现按钮点击效果

哈喽,你好啊,我是雷工!在做SCADA项目的时候,按钮是不可缺少的功能,但软件自带的按钮太丑,已经无法满足现如今客户对界面美观度的要求。这时候就需要UI小姐姐设计美观大气的SCADA界面,但UI设计的按钮切图放到程序中只是图片素材,当添加了按钮功能时,虽然能实现按钮功能,但没有任何点击效果;当遇到有需要连锁条件才能点击的按钮时,操作员无法区分是有连锁点击了没反应,还是系统界面卡死了导致的没点击成功,这时候有点击效果就能很好的区分这种问题。本篇介绍一种实现按钮点击效果的方法,以下为操作过程。

做有价值的事,积累有价值的笔记! 2764

pytorch入门——构建神经网络

本文介绍了基于pytorch神经网络的典型构建流程,介绍了损失函数 反向传播 更新参数等

qq_53536373的博客 7560

【异常】DeepSeek API HTTP 401 认证失败错误完整排查与解决方案

摘要:本文针对DeepSeek API开发中的HTTP 401认证失败错误进行深度解析,指出该错误属于不可重试的认证类问题。文章首先拆解错误日志关键字段,区分401与其他API错误的本质差异。随后提供优先级排序的全链路解决方案:1)检查API密钥有效性;2)规范请求头认证格式;3)排查账户权限状态;4)验证请求环境配置。最后建议通过新建测试密钥、使用官方示例代码或联系技术支持进行兜底处理。全文采用技术脱敏处理,为开发者提供系统性的401错误排查指南。(149字)

奶爸的编程之路,也就一周冷个三天 1521

ansys license许可证问题:Ansys License Manager Release 2024 R1...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 5366

用pytorch构建神经网络

数据预处理 在神经网络模型中之前,要对数据进行一系列的预处理,如果是类型变量,可使用one-hot编码;对于数值类型,可进行标准化,让其属性值在0左右波动 import torch import numpy as np import pandas as pd from torch.autograd import Variable #输入特征,最后一列为分类 feature = [[200,697...

lbw522的博客 326

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

(2)pytorch中构建一个神经网络

本文主要讲述了在pytorch框架下,如何构建一个简单的神经网络,并将网络应用于数据的训练当中,主要描述了有关torch.nn常用函数,损失函数,反向传播,网络参数更新等内容。

qq_52019496的博客 1357

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

PyTorch中神经网络的模型构建

本文介绍了PyTorch中自定义神经网络模型的核心方法,重点讲解了从基础层构建到完整网络设计的实现过程。主要内容包括:1)继承nn.Module类创建自定义模型的基本框架;2)实现卷积层、池化层等核心组件的原理与代码;3)经典网络结构LeNet和AlexNet的实现细节与对比分析。文章通过具体代码示例,展示了如何定义网络参数、实现前向传播,以及处理不同维度的输入数据,为PyTorch初学者提供了从理论到实践的完整指导。

m0_69704099的博客 1116

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

使用PyTorch构建简单的神经网络

1.背景介绍 在本文中,我们将深入了解如何使用PyTorch构建简单的神经网络。我们将从背景介绍开始,然后详细讨论核心概念、算法原理、最佳实践和实际应用场景。最后,我们将推荐一些工具和资源,并总结未来发展趋势与挑战。 1. 背景介绍 PyTorch是一个开源的深度学习框架,由Facebook的Core Data Science Team开发。它提供了一个易于使用的接口,使得研究人员和工程师可...

AI天才研究院 1019

pytorch构建神经网络

用PyTorch构建神经网络是机器学习领域中非常热门的话题。PyTorch因其易用性和灵活性而受到广大开发者的喜爱。本文将通过12个实战案例,带你从零开始构建神经网络. 案例1:简单的线性回归模型 目标:使用PyTorch构建一个简单的线性回归模型。代码示例: 案例1:简单的线性回归模型 目标:使用PyTorch构建一个简单的线性回归模型。import torch import torch.nn as nn import torch.optim as optimX = torch.tensor([[1.0]

Jianghl_2017的博客 1133

利用 PyTorch 构建神经网络(详细版)

点击关注我哦欢迎关注“小白玩转Python”,发现更多 “有趣”“The question of whether a computer can think is no more int...

Warmer_Sweeter 1万+

pytorch构建神经网络_如何从头开始构建自己的PyTorch神经网络层

pytorch构建神经网络 这实际上是杰里米·霍华德 ( Jeremy Howard )的fast.ai课程第5课的作业。我已经展示了使用PyTorch 从头开始构建卷积神经网络是多么容易 。 今天,让我们尝试更深入地研究,看看是否可以编写自己的nn.Linear模块。 为什么开发人员已经在Facebook上编写了自己的PyTorch模块,却浪费了时间? 好吧,对于您而言,您将对所有部件的组...

编程故事的地方 1288

Pytorch构建神经网络基础

返回X-X的均值调用其中均值为3,预测输出为tensor([-2,-1,0,1,2])

m0_74710085的博客 1191

Pytorch构建神经网络

torch.Tensor是整个package中的核心类,如果将属性.requires_grad设置为True,它将追踪在这个类上定义的所有操作,当代码要进行反向传播的时候,直接调用.backword()就可以自动计算所有的梯度.在这个Tensor上的所有梯度将被累加进属性.grad中。除了.detach(),如果想终止对计算图的回溯,也就是不再进行方向传播求导数的过程,也可以采。torch.nn构建的神经网络只支持mini-batches的输入,不支持单一样本的输入。估输入和目标值之间的差距.

qq_49786473的博客 893

使用Pytorch构建一个神经网络

关于torch.nn ·使用Pytorch来构建神经网络,主要的工具都在torch.nn包中 ·nn依赖于autograd来定义模型,并对其自动求导 构建神经网络的典型流程 ·定义一个拥有可学习参数的神经网络 ·遍历训练数据集 ·处理输入数据使其流经神经网络 ·计算损失值 ...

weixin_57231611的博客 5227
上一篇: 这个库居然能让python提速100倍
下一篇: 用python使图形动起来?
python程序员小'鹏
博客等级 码龄6年 163粉丝 87原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值