首页 > 其他分享 >torch.nn.Linear 和 torch.nn.Dropout

torch.nn.Linear 和 torch.nn.Dropout

时间:2023-07-25 11:02:44浏览次数:31  
标签:输出 tensor nn Dropout torch 张量

torch.nn.Linear 和 torch.nn.Dropout_全连接

torch.nn.Linear 

torch.nn.Linear是PyTorch中的一个线性层,它实现了一个全连接层,即输入和输出之间的每个神经元都连接到彼此。它的构造函数接受两个参数:输入特征的数量和输出特征的数量。例如,如果你想要将一个长度为100的输入向量映射到一个长度为10的输出向量,可以使用以下代码创建一个线性层:

import torch
import torch.nn as nn

linear_layer = nn.Linear(100, 10)

在前向传递过程中,你可以将输入张量传递给线性层,然后通过调用线性层的函数来计算输出张量。例如:

input_tensor = torch.randn(2, 100)  # 随机生成2个100维的输入向量
print("input_tensor: ", input_tensor)

output_tensor = linear_layer(input_tensor)  # 计算输出张量
print("output_tensor: ", output_tensor)

在这个例子中,我们创建了一个大小为100x10的线性层,然后将一个大小为32x100的输入张量传递给它。线性层将对每个输入向量进行线性变换,并输出一个大小为32x10的输出张量。

线性层在深度学习中非常常用,它可以用于实现神经网络中的任何层,例如全连接层、卷积层等等。

输出结果如图所示,注意每次执行上述代码,输出的tensor不一样:

torch.nn.Linear 和 torch.nn.Dropout_构造函数_02

torch.nn.Dropout

torch.nn.Dropout是PyTorch中的一个Dropout层,它可以在训练期间随机地将一些神经元的输出设置为0,以减少过拟合。Dropout层通常被用于全连接层和卷积层中,可以在训练期间随机地将一些神经元的输出设置为0,然后将剩余的神经元的输出乘以一个缩放因子,以保持其期望值不变。

Dropout层的构造函数接受一个参数,即dropout_prob,它指定了每个神经元被设置为0的概率。例如,如果你想要在每个Dropout层中随机丢弃50%的神经元,可以使用以下代码创建一个Dropout层:

import torch
import torch.nn as nn

dropout_layer = nn.Dropout(0.5)

在前向传递过程中,你可以将输入张量传递给Dropout层,然后通过调用Dropout层的函数来计算输出张量。例如:

input_tensor = torch.randn(2, 100)  # 同上

output_tensor = dropout_layer(input_tensor)  # 计算输出张量
print("output_tensor: ", output_tensor)

在这个例子中,我们创建了一个Dropout层,它会随机地将每个神经元的输出设置为0或缩放因子的倒数。然后,我们将一个大小为32x100的输入张量传递给它,并计算一个大小相同的输出张量。

Dropout层是一种常用的正则化技术,可以有效地减少神经网络的过拟合。它可以用于任何深度学习模型中,特别是在训练数据较少或模型较大时,可以帮助提高模型的泛化能力。

输出结果如图所示,可以看出,不论正负,约有一半0.0000:

torch.nn.Linear 和 torch.nn.Dropout_深度学习_03









标签:输出,tensor,nn,Dropout,torch,张量
From: https://blog.51cto.com/u_15408171/6843326

相关文章

  • 【d2l 问题记录】【1】 视频55 从零实现rnn
    H,=state这句代码我真是看懵逼了。1元组的打包和解包左边的参数数量要和右边元组里的元素数量一致参考:https://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences2单元素元组的打包和解包参考:https://blog.csdn.net/Aaron_neil/article/details/......
  • cuda/cudnn 环境安装及查询
    引用出处:https://www.autodl.com/docs/cuda/注意:如果没有二次编译代码的需求,正常情况下不需要单独安装CUDA/cuDNN,因为框架都内置了编译好的CUDA,框架版本和CUDA版本是对应的,只需要关注框架版本即可,无需独立关注CUDA版本。查询默认CUDA/cuDNN版本¶注意:通过nvidia-smi命令查看到......
  • anaconda安装指定版本的pytorch
    首先卸载原有torchpipuninstalltorch安装新的torch版本pipinstalltorch==1.6.0#这样Didn'twork!!!1.先在PyTorch官网查到自己电脑对应的torch版本网址:https://pytorch.org/get-started/previous-versions/2.选择合适的版本复制代码在虚拟环境中pipinstalltorch......
  • 用户交互Scanner
    用户交互Scanner-java.util.Scanner是Java5的新特征,可以通过Scanner类获取用户的输入基本语法publicclassDemo{publicstaticvoidmain(String[]args){Scanners=newScanner(System.in);}}-通过Scanner类的next()和nextLine()方法获取输入的......
  • 复习《动手学深度学习 pytorch版》
    向量的范数是表示一个向量有多大。这里考虑的大小(size)概念不涉及维度,而是分量的大小。定义了向量空间里的距离,它的出现使得向量之间的比较成为了可能。范数是一个函数对于向量来说常用的是L1、L2范数,对于矩阵来说常用的是反向传播(backpropagate)意味着跟踪整个计算图,填充关......
  • inno setup打包软件学习
    目录一 打包结果二示例打包脚本三错误解决3.1另一个程序正在使用此文件,进程无法访问3.2桌面图标无法修改四参考资料一 打包结果二示例打包脚本使用打包软件下载地址:innosetup-6.2.2.exeUS7,1552023-02-15UnicodeInnoSetup self-installingpackage.#defineMyAppName......
  • gitlab runner 自动集成
    variables:PROJECT_NAME:fuluops_svrstages:-build_push.app_build_push:&app_build_pushstage:build_pushimage:registry.cn-hangzhou.aliyuncs.com/ich-sre/ops_deploy:2.3script:-ls-al&&makecompile......
  • httprunner
    httprunner(仅作为个人笔记,如有雷同,请联系删除。。)https://www.cnblogs.com/aichixigua12/p/13162479.htmlHttpRunner是一款面向HTTP(S)协议的通用测试框架,只需编写维护一份YAML/JSON脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。1、特点:继承Requ......
  • Navicat连接Mysql出现“plugin 'caching_sha_password' cannot be loaded”错误
    Navicat连接Mysql出现“plugin'caching_sha_password'cannotbeloaded”错误问题现场​​**官方说明:**​https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html解决方案使用本地mysql命令行登录;mysql-uroot-p先查一下看看--使用......
  • Python【19】 torch.randn( ) 返回标准正态分布张量
    参考:https://pytorch.org/docs/stable/generated/torch.randn.html......