神经网络——非线性激活

2023-11-12

torch官网:torch.nn — PyTorch 1.11.0 documentation

非线性变换的主要目的就是给网中加入一些非线性特征,非线性越多才能训练出符合各种特征的模型。常见的非线性激活:

ReLU:

 

 官网给出的例子:

  >>> m = nn.ReLU()
  >>> input = torch.randn(2)
  >>> output = m(input)


An implementation of CReLU - https://arxiv.org/abs/1603.05201

  >>> m = nn.ReLU()
  >>> input = torch.randn(2).unsqueeze(0)
  >>> output = torch.cat((m(input),m(-input)))

 自己创建一个实现代码  其中会输如会出现 inplace

 

 例如inplace=false

import torch
from torch import nn
from torch.nn import ReLU

input=torch.tensor([[1,-0.5],
                   [-1,3]])
# 改变矩阵size 1维2*2
input=torch.reshape(input,(-1,1,2,2))

print(input.shape)


class LL(nn.Module):
    def __init__(self):
        super(LL,self).__init__()
        self.relu1=ReLU(inplace=False)

    def forward(self,input):
        output=self.relu1(input)
        return  output

ll=LL()
output=ll(input)
print(output)

 输出结果:

SIGMOID:

 

 官网给出的例子

m = nn.Sigmoid()
input = torch.randn(2)
output = m(input)

自己创建一个实现代码(输入为CIFAR10数据集): 

import torch
import torchvision
from torch import nn
from torch.nn import ReLU, Sigmoid
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

dataset=torchvision.datasets.CIFAR10("./dataset",train=False,transform=torchvision.transforms.ToTensor(),
                                      download=True)

dataloader =DataLoader(dataset,batch_size=64)

class LL(nn.Module):
    def __init__(self):
        super(LL,self).__init__()
        # self.relu1=ReLU(inplace=True)
        self.sigmoid1=Sigmoid()

    def forward(self,input):
        output = self.sigmoid1(input)
        return  output

ll=LL()
writer = SummaryWriter("nn.sigmoid")
step=0
for data in dataloader:
    imgs,targets =data
    writer.add_images("input",imgs,global_step=step)
    output = ll(imgs)
    writer.add_images("output",output,global_step=step)
    step=step+1

writer.close()

输出结果:

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

神经网络——非线性激活 的相关文章

随机推荐

  • sync/atomic 库使用小结

    sync atomic 库提供了原子操作的支持 原子操作直接有底层CPU硬件支持 因而一般要比基于操作系统API的锁方式效率高些 本文对 sync atomic 中的基本操作进行一个简单的介绍 原子增值 用于对变量值进行原子增操作 并返回增
  • 聊天机器人和 Rasa 2.0 的新增功能

    目录 聊天机器人和 Rasa 2 0 的新增功能 文件夹和文件层次结构 配置 config yml Pipeline Policies Importers Domain domain yml Training Data Format NLU
  • 码点与代码单元

    码点与代码单元 码点 码点是指与一个编码表中的某个字符对应的代码值 在Unicode标准中 码点采用16进制书写 并加上U 例如U 0041就是拉丁字母A的码点 代码单元 UTF 16编码采用不同长度的编码表示所有Unicode码点 在基本
  • “12306”是如何支撑百万QPS的?

    12306抢票 极限并发带来的思考 每到节假日期间 一二线城市返乡 外出游玩的人们几乎都面临着一个问题 抢火车票 虽然现在大多数情况下都能订到票 但是放票瞬间即无票的场景 相信大家都深有体会 尤其是春节期间 大家不仅使用12306 还会考虑
  • Linux中的五种I/O模型

    概念说明 用户空间和内核空间 现在操作系统都是采用虚拟存储器 那么对32位操作系统而言 它的寻址空间 虚拟存储空间 为4G 2的32次方 操作系统的核心是内核 独立于普通的应用程序 可以访问受保护的内存空间 也有访问底层硬件设备的所有权限
  • OpenCV中对Mat矩阵加、减、乘、除、转置等操作的总结

    1 矩阵加 1 使用重载的 运算符 矩阵的加法是指两个矩阵对于位置的数值相加 使用OpenCv重载的 运算符 假设两个矩阵都为uchar类型 例如 Mat src1 Mat
  • 1.3 DLT645

    一 简介 目前市面的大部分的电表 通信都是遵循该协议 因为物理层使用RS 485 故为半双工通信 主站指终端设备 从站指多功能电能表 数据链路层 默认波特率2400 偶校验 8bit数据 1bit停止位 先传低位 后传高位 D0是字节最低有
  • uiautomator2学习5——一个简单的例子

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 uiautomator2学习5 一个简单的例子 写了个简单的例子 就是打开淘宝搜索钥匙扣的一个简单的代码 如下 import uiautomator2 as u2 d u2
  • Spring框架中IOC容器和Bean的配置

    一 IOC和DI的解释 1 IOC Inversion of Control 反转控制 在应用程序中的组件需要获取资源时 传统的方式是组件主动的从容器中获取所需要的资源 在这样的模式下开发人员往往需要知道在具体容器中特定资源的获取方式 增加
  • Java基础——Map集合遍历方式

    1 方式一 键找值 先获取Map集合的全部键的Set集合 遍历键的Set集合 然后通过键提取对应值 涉及API 方法名称 说明 Set
  • 【导入file文件转数组】input -> type=‘file‘ -> list

    组件 admin文件 引用xlsx js import HandleImportFile from common xlsx js
  • 读书笔记_《Linux高性能服务器编程》_第 5 章:网络编程基础API

    第 5 章 Linux网络编程基础API 知识要点 socket 地址 API socket 基础 API 网络信息 API 1 socket 地址API 主机字节序和网络字节序 CPU 32位 的累加器一次至少可以装载 4 字节 即一个整
  • C# 常用复习

    Char类型 char a a char b 8 char c L char d char e l char f IsLetter 判断是否是字母 Console WriteLine 判断a是否是字母 Char IsLetter a IsD
  • getaddrinfo简单应用——取得IP地址

    转自 http biancheng dnbcw info linux 265956 html 一个域名可能对应好几个ip地址 a out www baidu com 115 239 210 27 115 239 211 112 getadd
  • 深度学习: Epoch、batchsize、iterations 是什么?

    Epoch 英文 时代 阶段 一波 一轮 一个epoch 表示 所有的数据送入网络中 完成了一次前向计算 反向传播的过程 由于一个epoch 常常太大 分成 几个小的 baches 将所有数据迭代训练一次是不够的 需要反复多次才能拟合 收敛
  • String数组中扩容与填加元素

    String deepCode1 350000 350100 350102 String split deepCode1 split System out println String数组原来的长度为 split length 追加扩容 w
  • vue高德地图的实现 根据经纬度回显地理位

    效果图 1 首先 下载vue amap 插件 2 在main js中引入 import VueAMap from vue amap Vue use VueAMap VueAMap initAMapApiLoader key 你自己的key
  • 深度探索c++对象模型之template中的名称决议方式

    我们应该能够区分以下两种意义 一个是c standard标准中的 scope of the template definition 模板定义域 另一个是c standard标准中的 scope of the template instant
  • SpringMvc

    简述 基于Java实现Mvc模型的轻量级web框架 配置案例过程 导入maven
  • 神经网络——非线性激活

    torch官网 torch nn PyTorch 1 11 0 documentation 非线性变换的主要目的就是给网中加入一些非线性特征 非线性越多才能训练出符合各种特征的模型 常见的非线性激活 ReLU 官网给出的例子 gt gt g