Neural Network学习笔记2

news2024/12/23 11:29:36

torch.nn:

Containers: 神经网络骨架

Convolution Layers 卷积层

Pooling Layers  池化层

Normalization Layers 正则化层

Non-linear Activations (weighted sum, nonlinearity) 非线性激活

Convolution Layers

Conv2d

torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None)

in_channels= : 输入图像的通道数

out_channels= : 输出图象的通道数

kernel_size=3: 3x3的卷积核,会在训练过程中不断调整

stride: 卷积核滑动的步长

padding: 在图像的纵向和横向填充 ,填充的地方一般默认为0,这样卷积核可以划过更多地方

padding_mode=zeros: padding时的填充值

dilation: 卷积核的对应位

groups

bias:偏置

卷积过程:

 经典vgg16的卷积过程:

推导padding等参数的公式:

import torch
import torchvision
from torch import nn
from torch.nn import Conv2d

from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

dataset = torchvision.datasets.CIFAR10("../dataset_transform",train=False, transform=torchvision.transforms.ToTensor(), download=True)
dataloader = DataLoader(dataset, batch_size=64)

class Zrf(nn.Module):
    def __init__(self):
        super(Zrf, self).__init__()
        self.conv1 = Conv2d(in_channels=3, out_channels=6, kernel_size=3, stride=1, padding=0)

    def forward(self, x):
        x = self.conv1(x)
        return x

# 初始化网络
zrf = Zrf()
print(zrf)

writer = SummaryWriter("conv2d")
step = 0
for data in dataloader:
    imgs, targets = data
    output = zrf(imgs)
    print(imgs.shape)
    print(output.shape)
    # torch.Size([64, 3, 32, 32])
    writer.add_images("input_imgs", imgs, step)
    # torch.Size([64, 6, 30, 30]) ---> [xxx, 3, 30, 30]
    output = torch.reshape(output, (-1, 3, 30, 30))
    writer.add_images("output_imgs", output, step)
    step = step + 1
writer.close()

Pooling Layers

MaxPool2d

最大池化--->下采样(别称)

(池化层没有要优化的参数,只是形式上的卷积核)

kernel_size=3: 3x3的窗口,用来取最大值

stride: 窗口滑动的步长,默认值是kernel_size的大小

padding: 在图像的纵向和横向填充 ,填充的地方一般默认为0

dilation: 空洞卷积

return_indices: 通常来说不会用到

ceil_mode: 设置为True时,会使用ceil模式(不满3x3也取一个最大值)而不是floor模式(不满3x3就不取值 )

一般理解------ceil:向上取整,floor模式:向下取整

为什么要进行最大池化? 在保持数据特征的同时,减小数据量

import torch
import torchvision
from torch import nn
from torch.nn import MaxPool2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

dataset = torchvision.datasets.CIFAR10(root="../dataset_transform", download=True, train=False, transform=torchvision.transforms.ToTensor())
dataloader = DataLoader(dataset, batch_size=64)

# input = torch.tensor([[1, 2, 0, 3, 1],
#                       [0, 1, 2, 3, 1],
#                       [1, 2, 1, 0, 0],
#                       [5, 2, 3, 1, 1],
#                       [2, 1, 0, 1, 1]], dtype=torch.float32)
# input = torch.reshape(input, (-1, 1, 5, 5))
# print(input.shape)

class Zrf(nn.Module):
    def __init__(self):
        super(Zrf, self).__init__()
        self.maxpool1 = MaxPool2d(kernel_size=3)

    def forward(self, x):
        output = self.maxpool1(x)
        return output

zrf = Zrf()
# output = zrf(input)
# print(output)
writer = SummaryWriter("log_maxpol")
step = 0
for data in dataloader:
    imgs, targets = data
    writer.add_images("max_before", imgs, step)
    output = zrf(imgs)
    writer.add_images("max_afteer", output, step)
    step = step + 1
writer.close()


Non-linear Activations

Relu:大于0取原值,小于0取0

Sigmoid:常用激活函数  

 inplace参数

input = -1
Relu(input, inplace = True)
# 结果:input = 0

input = -1
output = Relu(input, inplace = False)
# 结果:input = -1, output = 0
import torch
import torchvision
from torch import nn
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

input = torch.tensor([[1, -0.5],
                     [-1, 3]])
input = torch.reshape(input, (-1, 1, 2, 2))

# print(input.shape)

dataset = torchvision.datasets.CIFAR10(root="../dataset_transform", download=True, train=False, transform=torchvision.transforms.ToTensor())
dataloader = DataLoader(dataset, batch_size=64)

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

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

# zrf = Zrf()
# output = zrf(input)
# print(output)

zrf = Zrf()

writer = SummaryWriter("log_sigmoid")
step = 0
for data in dataloader:
    imgs, targets = data
    writer.add_images("before_sigmoid", imgs, step)
    output = zrf(imgs)
    writer.add_images("after_sigmoid", output, step)
    step = step + 1

writer.close()

线性层以及其他层介绍

Linear Layers

线性层,目的是变换特征维度,参数:in_features, out_features, bias (bool)

in_features:

out_features:

bias (bool):偏置

计算过程中的权重k和偏置b要按照一定条件进行调整和优化

Normalization Layers

正则化层:对输入进行正则化(注意:正则化不是归一化),有助于梯度下降,解决过拟合

 num_feature(int):  输入图像的通道数层

affine(bool):  当设置为True时,该模块具有可学习的仿射参数,一般默认为True

Recurrent Layers

循环网络,多用于文字处理中

Transformers Layers

。。。21年大火

Dropout Layers

在训练过程中,会随机的把输入图像(tensor数据类型)中的元素以p的概率变成0

主要是为了防止过拟合

Sparse Layers

主要用于自然语言处理

Distance Functions

计算两个值之间的误差

Loss Functions

计算损失

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/507458.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Web缓存利用分析(三)

导语:前一篇文章介绍了Server Cache Poisoning在实际应用场景下,产生DOS攻击的利用方式。本篇文章则介绍Web Cache Deception在真实场景下的应用方式和测试情况。 前言 前一篇文章介绍了Server Cache Poisoning在实际应用场景下,产生DOS攻击…

产品经理入门书籍有哪些?

说到入门产品经理,应该看哪些书籍呢?下面咱们就从产品经理的各种能力维度来聊聊,这样更有针对性。 一、夯实产品经理的基础,建立产品思维 首先我们入行,要清楚产品经理具体的工作怎么做,比如:…

分享一个造成azkaban上传文件失败的案例

背景: 当初由于开发的需求,需要将传统方式部署azkaban以容器的方案部署,不但可以满足业务需求,还可以将用于构建的azkaban ECS虚拟机空闲出来,用作k8s节点。 但是在构建azkaban容器实例的时候由于azkaban参数配…

Flink第三章:基本操作(二)

系列文章目录 Flink第一章:环境搭建 Flink第二章:基本操作. Flink第三章:基本操作(二) 文章目录 系列文章目录前言一、物理分区1.shuffle(随机分区)2.Round-Robin(轮询)3.rescale(重缩放分区)4.broadcast(广播)5.Custom(自定义分区) 二、Sink1.写出到文件2.写入到Kafka3.写入到…

leetcode:203.移除链表元素(两种方法详解)

前言:内容包括-题目,代码实现(两种方法),大致思路,代码解读 题目: 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 …

【CSS系列】第五章 · CSS文本属性

写在前面 Hello大家好, 我是【麟-小白】,一位软件工程专业的学生,喜好计算机知识。希望大家能够一起学习进步呀!本人是一名在读大学生,专业水平有限,如发现错误或不足之处,请多多指正&#xff0…

QT With OpenGL(SSAO)(Screen-Space Ambient Occlusion)

文章目录 在G_Buffer中加入深度信息使用深度信息得到环境遮蔽的结果1. 新建SSAO帧缓存类2.生成法向半球核心3. 生成随机核心转动纹理为什么要生成随机核心转动创建一个小的随机旋转向量纹理 4.使用G_Buffer渲染SSAO纹理传入参数着色器1. 获取当前像素在纹理中的信息2.计算TBN矩…

SpringBoot -- AOP

一直只听过AOP,但是并不知道AOP的原理使用,参考深入浅出SpringBoot2.x学习一下SpringBoot AOP编程 AOP是基于动态代理实现的 静态代理就是代理类中有一个实现类,和实现类相同名称的方法,调用代理的request方法,执行顺…

RF检测器/控制器MS2351可pin对pin兼容AD8314、MAX4003

MS2351M/MS2351D 是一款对数放大器芯片,主要用于接收信号强度指示 (RSSI) 与控制功率放大器,工作频率范围是50MHz~3000MHz,动态范围可达 35dB 到 45dB。可pin对pin兼容AD8314、MAX4003。 MS2351M/MS2351D 是电压响应器件&#xff…

【c语言】结构体详解 | 结构体数组/指针

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

【ChirpStack 】如何获取 JWT TOKEN

LoRa App Server 提供了两类 API 接口&#xff0c;其中 RESTful JSON API 提供了一个 API console&#xff0c;在AS地址的基础上使用 /api 即可访问&#xff0c;罗列了 API 端点和文档介绍&#xff0c;测试起来非常方便。 本文主要介绍 如何使用 chirpstack 的API 进行测试以及…

商户查询的缓存——基于逻辑过期方式解决缓存击穿问题

//基于逻辑过期方式解决缓存基穿问题 理论上讲都是可以命中的 public Shop queryWithLogincalExpire(Long id){ //1.从redis中查商铺缓存 String jsonShop stringRedisTemplate.opsForValue().get(CACHE_SHOP_KEY id); //2.未命中 if(StringUtils.isBlank(j…

Python程序运行中报Memoryerror的解决方案

在求解某高维时间依赖的PDE中&#xff0c;空间计算域在每一个空间方向均为M256&#xff0c;且快速算法被执行以解决储存与计算速度问题&#xff1b;而时间方向取T2000&#xff0c;时间步长0.01。 在Spyder提前运行过&#xff0c;第一次假如迭代了1468次&#xff0c;即会报Memo…

本地部署 Dolly V2

本地部署 Dolly V2 1. 什么是 Dolly V22. Github 地址3. 安装 Miniconda34. 创建虚拟环境5. 部署 Dolly V26. 编写测试程序7. 运行测试程序 1. 什么是 Dolly V2 Databricks的dolly-v2-12b&#xff0c;是一个在 Databricks 机器学习平台上训练的指令跟随型大型语言模型&#xf…

计算机图形学 | 实验七:完成摄像机类的创建

计算机图形学 | 实验七&#xff1a;完成摄像机类的创建 计算机图形学 | 实验七&#xff1a;完成摄像机类的创建摄像机/观察空间Look At 矩阵自由移动视角移动鼠标输入缩放 华中科技大学《计算机图形学》课程 MOOC地址&#xff1a;计算机图形学&#xff08;HUST&#xff09; 计…

【自然语言处理】自然语言处理 --- NLP入门指南

文章目录 一、什么是NLP二、NLP任务类型三、NLP的预处理英文 NLP 语料预处理的 6 个步骤中文 NLP 语料预处理的 4 个步骤第1步&#xff1a;收集您的数据---语料库第2步&#xff1a;清理数据 --- 文本清洗第3步&#xff1a;分词第4步&#xff1a;标准化第5步&#xff1a;特征提取…

花式玩转二叉树层序遍历——实现二叉树Z字输出

文章目录 题目介绍二叉树层序遍历——队列实现Java完整代码 分析Java完整代码实现总结 题目介绍 这个题目是在做一个测试里面遇到的&#xff0c;大致描述如下&#xff1a; 现在有一棵二叉树&#xff0c;需要实现如图所示的交叉来回遍历&#xff1a; 即相较于普通的层序遍历&a…

基于目标级联法的微网群多主体分布式优化调度(已更新)

目录 一、主要内容 1.1 上层微网群模型 1.2 下层微网模型 二、部分程序 三、实现效果 四、下载链接 一、主要内容 本文复现《基于目标级联法的微网群多主体分布式优化调度》文献的目标级联部分&#xff0c; 建立微网群系统的两级递阶优化调度模型: 上层是微网群能量调度中…

Jvm --java虚拟机(下)

目录 执行引擎 什么是执行引擎&#xff1f; 什么是解释器&#xff1f;什么是 JIT 编译器&#xff1f; 为什么 Java 是半编译半解释型语言&#xff1f; JIT 编译器执行效率高为什么还需要解释器&#xff1f; 垃圾回收 垃圾回收概述 什么是垃圾&#xff1f; 为什么需要GC&a…

Redis持久化--RDB

一. RDB是什么 在指定的时间间隔内将内存中的数据集快照写入磁盘&#xff0c; 也就 Snapshot 快照&#xff0c;恢复时将快照文件读到内存二. RDB持久化的流程 解读&#xff1a; redis 客户端执行 bgsave 命令或者自动触发 bgsave 命令&#xff1b;主进程判断当前是否已经存在…