首页 > 其他分享 >实现第一个神经网络

实现第一个神经网络

时间:2024-07-04 22:28:31浏览次数:29  
标签:loss 第一个 nn 实现 torch epoch 神经网络 size

PyTorch 包含创建和实现神经网络的特殊功能。在本节实验中,将创建一个简单的神经网络,其中一个隐藏层开发一个输出单元。

通过以下步骤使用 PyTorch 实现第一个神经网络。

第1步

首先,需要使用以下命令导入 PyTorch 库。

In [1]:

import torch

import torch.nn as nn

第2步

定义所有层和批量大小以开始执行神经网络,如下所示。

In [2]:

# Defining input size, hidden layer size, output size and batch size respectively

n_in, n_h, n_out, batch_size = 10, 5, 1, 10

第3步

由于神经网络包含输入数据的组合以获取相应的输出数据,将遵循以下相同的程序。

In [3]:

# Create dummy input and target tensors (data)

x = torch.randn(batch_size, n_in)

y = torch.tensor([[1.0], [0.0], [0.0],

[1.0], [1.0], [1.0], [0.0], [0.0], [1.0], [1.0]])

第4步

借助内置函数创建顺序模型。使用下面的代码行,创建一个顺序模型。

In [4]:

# Create a model

model = nn.Sequential(nn.Linear(n_in, n_h),

    nn.ReLU(),

    nn.Linear(n_h, n_out),

    nn.Sigmoid())

第5步

在梯度下降优化器的帮助下构造损失函数,如下所示。

In [5]:

#Construct the loss function

criterion = torch.nn.MSELoss()

# Construct the optimizer (Stochastic Gradient Descent in this case)

optimizer = torch.optim.SGD(model.parameters(), lr = 0.01)

第6步

使用给定的代码行使用迭代循环实现梯度下降模型。

In [6]:

# Gradient Descent

for epoch in range(50):

    # Forward pass: Compute predicted y by passing x to the model

    y_pred = model(x)

    # Compute and print loss

    loss = criterion(y_pred, y)

    print('epoch: ', epoch,' loss: ', loss.item())

    # Zero gradients, perform a backward pass, and update the weights.

    optimizer.zero_grad()

    # perform a backward pass (backpropagation)

    loss.backward()

    # Update the parameters

    optimizer.step()

epoch:  0  loss:  0.26868727803230286

epoch:  1  loss:  0.2684982419013977

epoch:  2  loss:  0.2683093845844269

epoch:  3  loss:  0.2681207060813904

epoch:  4  loss:  0.267932265996933

epoch:  5  loss:  0.2677440345287323

epoch:  6  loss:  0.26755601167678833

epoch:  7  loss:  0.2673681080341339

epoch:  8  loss:  0.267180472612381

epoch:  9  loss:  0.2669930160045624

epoch:  10  loss:  0.2668057382106781

epoch:  11  loss:  0.2666186988353729

epoch:  12  loss:  0.2664318084716797

epoch:  13  loss:  0.2662450969219208

epoch:  14  loss:  0.2660585939884186

epoch:  15  loss:  0.2658722996711731

epoch:  16  loss:  0.2656860947608948

epoch:  17  loss:  0.26550015807151794

epoch:  18  loss:  0.26531440019607544

epoch:  19  loss:  0.2651287913322449

epoch:  20  loss:  0.264943391084671

epoch:  21  loss:  0.2647581398487091

epoch:  22  loss:  0.26457303762435913

epoch:  23  loss:  0.26438820362091064

epoch:  24  loss:  0.2642034590244293

epoch:  25  loss:  0.2640189528465271

epoch:  26  loss:  0.26383453607559204

epoch:  27  loss:  0.2636503577232361

epoch:  28  loss:  0.2634662687778473

epoch:  29  loss:  0.26329419016838074

epoch:  30  loss:  0.2631300091743469

epoch:  31  loss:  0.2629658579826355

epoch:  32  loss:  0.2628018260002136

epoch:  33  loss:  0.2626378536224365

epoch:  34  loss:  0.262474000453949

epoch:  35  loss:  0.2623102366924286

epoch:  36  loss:  0.26214656233787537

epoch:  37  loss:  0.2619829773902893

epoch:  38  loss:  0.2618195414543152

epoch:  39  loss:  0.26165610551834106

epoch:  40  loss:  0.2614927887916565

epoch:  41  loss:  0.2613295316696167

epoch:  42  loss:  0.26116639375686646

epoch:  43  loss:  0.2610033452510834

epoch:  44  loss:  0.26084035634994507

epoch:  45  loss:  0.2606774866580963

epoch:  46  loss:  0.26051464676856995

epoch:  47  loss:  0.2603519558906555

epoch:  48  loss:  0.2601892650127411

epoch:  49  loss:  0.2600266933441162

5. 神经网络到功能块

训练深度学习算法涉及以下步骤:

  • 构建数据管道
  • 构建网络架构
  • 使用损失函数评估架构
  • 使用优化算法优化网络架构权重

训练特定的深度学习算法是将神经网络转换为功能块的确切要求,如下所示。

关于上图,任何深度学习算法都涉及获取输入数据,构建各自的架构,其中包括嵌入其中的一堆层。

观察上图,使用损失函数对神经网络权重的优化进行评估。

标签:loss,第一个,nn,实现,torch,epoch,神经网络,size
From: https://blog.csdn.net/2201_75642955/article/details/140190082

相关文章

  • vue项目中使用AES实现密码加密解密ECB和CBC模式)
    ECB:是一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。CBC:是一种循环模式,前一个分组的密文和当前分组的明文异或或操作后再加密,这样做的目的是增强破解难度。(不容易主动攻击,安全性好于ECB,是SSL、IPSec的标准) 1.先安装crypto-......
  • Asp .Net Core 系列:基于 Castle DynamicProxy + Autofac 实践 AOP 以及实现事务、用户
    目录什么是AOP?.NetCore中有哪些AOP框架?基于CastleDynamicProxy实现AOPIOC中使用CastleDynamicProxy实现事务管理实现用户自动填充什么是AOP?AOP(Aspect-OrientedProgramming,面向切面编程)是一种编程范式,旨在通过将横切关注点(cross-cuttingconcerns)从主要业务逻辑......
  • 精品在线试题库系统设计与实现
    摘 要使用旧方法对作业管理信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在作业管理信息的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的精品在线试题库系统有管理员,教师,学生三个角色。管理员......
  • 跟我一起学习和开发动态表单系统-动态表单系统的技术实现与优势(2)
    动态表单系统的技术实现与优势随着业务的发展,企业对信息系统的需求越来越复杂。传统的静态表单无法满足灵活调整和扩展的需求,而动态表单系统能够根据业务场景灵活地调整表单结构,提高开发效率和用户体验。本文将介绍一种基于Vue、ElementUI和SpringBoot+MyBatis的动态表单系统......
  • 跟我一起学习和开发动态表单系统-前端用vue、elementui实现方法(3)
    基于Vue、ElementUI和SpringBoot+MyBatis的动态表单系统前端实现解析在现代企业信息系统中,动态表单是一种非常常见的功能。它可以根据业务需求灵活地调整表单结构,以满足不同的数据收集和展示需求。在本文中,我们将探讨一种基于Vue、ElementUI和SpringBoot+MyBatis......
  • 跟我一起学习和开发动态表单系统-后端用spring boot、mybatis实现方法(4)
     ##动态表单系统:利用SpringBoot和MyBatis实现后端服务在现代企业应用中,表单是数据收集和处理的核心部分。然而,传统的表单系统难以适应快速变化的需求。为了解决这个问题,我们可以使用动态表单系统,它可以根据业务需求灵活地调整表单结构。本文将介绍如何使用SpringBoot和......
  • Python基于PyQt5和卷积神经网络分类模型(ResNet50分类算法)实现生活垃圾分类系统GUI界
    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。1.项目背景在当今社会,随着人们对环境保护意识的增强以及科技的快速发展,智能化的垃圾分类系统成为了一个热门的研究方向。结合深度学习技术,尤其是先进的图像识......
  • 常见加密解密算法及其在 PHP 中的实现
    加密和解密算法在信息安全中起着至关重要的作用。以下是一些常见的加密和解密算法,包括对称加密、非对称加密和哈希算法。对称加密算法对称加密算法使用相同的密钥进行加密和解密。常见的对称加密算法包括:AES(AdvancedEncryptionStandard):AES是一种广泛使用的对称加密算法,支......
  • python实现扑克游戏 - 抽鬼牌 和 21点
    poker_gamespython实现扑克游戏:抽鬼牌和21点-PythonImplementationofPokerGames:DrawingGhostCardsandBlackjackpoker模块首先,定义一个扑克模块,后面的包括以后的扑克牌游戏,都可以调用这个模块这个模块可以实现:卡牌、扑克牌组发牌、洗牌玩家摸牌、出牌等......
  • 使用go语言实现快速排序、归并排序、插入排序、冒泡排序、选择排序
    冒泡排序(BubbleSort):原理:比较相邻的元素,如果前一个比后一个大,就交换它们。这个过程会使得每一轮最大的元素“冒泡”到数组的末尾。时间复杂度:O(n^2)稳定性:稳定//BubbleSort函数使用冒泡排序算法对数组进行排序funcBubbleSort(arr[]int){ n:=len(arr) fori:=0......