从基础到卷积神经网络(第13天)

news2024/11/26 2:41:45

1. PyTorch 神经网络基础

1.1 模型构造

1. 块和层

首先,回顾一下多层感知机

import torch 
from torch import nn
from torch.nn import functional as F

net = nn.Sequential(nn.Linear(20, 256), nn.ReLU(), nn.Linear(256, 10))

X = torch.rand(2, 20) # 生成随机输入(批量大小=2, 输入维度=20)
net(X) # 输出(批量大小=2, 输出维度=10)

在这里插入图片描述

2. 自定义块

自定义MLP实现上一节的功能

class MLP(nn.Module): # 定义nn.Mudule的子类
    def __init__(self): 
        super().__init__() # 调用父类
        self.hidden = nn.Linear(20, 256) # 定义隐藏层
        self.out = nn.Linear(256, 10) # 定义输出层
        
    def forward(self, X): # 定义前向函数
        return self.out(F.relu(self.hidden(X))) # X-> hidden-> relu-> out

实例化MLP的层,然后再每次调用正向传播函数时调用这些层

net = MLP()
net(X)

在这里插入图片描述

3. 实现Sequential类

class MySequential(nn.Module):
    def __init__(self, *args):
        super().__init__()
        for block in args:
            self._modules[block] = block
        
    def forward(self, X):
        for block in self._modules.values():
            X = block(X)
        return X

net = MySequential(nn.Linear(20, 256), nn.ReLU(), nn.Linear(256, 10))
net(X)

在这里插入图片描述

4. 在正向传播中执行代码

class FixedHiddenMLP(nn.Module):
    def __init__(self):
        super().__init__()
        self.rand_weight = torch.rand((20, 20), requires_grad=False) # 加入随机权重
        self.linear = nn.Linear(20, 20)

    def forward(self, X):
        X = self.linear(X)
        X = F.relu(torch.mm(X, self.rand_weight) + 1) # 输入和随机权重做矩阵乘法 + 1(偏移)-》激活函数
        X = self.linear(X)
        while X.abs().sum() > 1: # 控制X小于1
            X /= 2
        return X.sum() # 返回一个标量

net = FixedHiddenMLP()
net(X)

5. 混合搭配各种组合块的方法

class NestMLP(nn.Module):
    def __init__(self):
        super().__init__()
        self.net = nn.Sequential(nn.Linear(20, 64), nn

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

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

相关文章

Java电子病历编辑器项目源码 采用B/S(Browser/Server)架构

电子病历(EMR,Electronic Medical Record)是用电子技术保存、管理、传输和重现的数字化的病人的医疗记录,取代手写纸张病历,将医务人员在医疗活动过程中,使用医疗机构管理系统生成的文字、符号、图表、图形、数据、影像等数字化内…

27 mysql 组合索引 的存储以及使用

前言 这里来看一下 mysql 中索引的 增删改查 查询在前面的系列文章中都有使用到 这里 来看一下 增删改 的相关实现 索引记录 和 数据记录 的处理方式是一致的 这里来看一下 组合索引 的相关, 以及 特性 组合索引的存储以及使用 创建数据表如下, 除了主键之外, 创建了…

Leetcode刷题笔记--Hot61-70

1--课程表(207) 主要思路: 用 in 记录每一门课程剩余的先修课程个数,当剩余先修课程个数为0时,将该课程加入到队列q中。 每修队列q中的课程,以该课程作为先修课程的所有课程,其剩余先修课程个数…

安卓camera2获取到的YUV420_888格式详解

本文字数:7885字 预计阅读时间:45分钟 安卓音视频开发中的一个环节是摄像头采集数据,而 Android 平台上摄像头采集的 API 有两套,camera1 和 camera2。本文主要讲的是 camera2 这套 API 在采集数据并指明 YUV420_888 格式时&#…

软件设计师_面向对象_学习笔记

文章目录 1 面向对象基本概念2 设计模式3 UML4 设计模式4.1 设计模式的基本概念4.2 设计模式的分类4.3 创建型模式 1 面向对象基本概念 2 设计模式 3 UML 4 设计模式 4.1 设计模式的基本概念 模式:通俗的来说就是成功方案的复用。 架构模式从全局看待问题。设计模式…

芯片学习记录TLP291-4

TLP291-4 芯片介绍 东芝TLP291-4由光学耦合到红外LED的光电晶体管组成。TLP291-4光电耦合器安装在非常小而薄的SO16封装中。由于TLP291-4在宽工作温度范围内得到保证(Ta-55至110),因此适用于高密度表面贴装应用,例如可编程控制器…

快速排序全面详解

目录 1 基本思想 2 排序步骤 3 代码实现 3.1 区间划分算法(hoare初始版本): 3.2 主框架 4 区间划分算法 4.1 hoare法 4.2 挖坑法 4.3 前后指针法 5 快排优化 5.1 取key方面的优化 5.2 递归方面的优化 5.3 区间划分方面的优化 6…

终极Whois查询工具:优雅美观、功能强大、信息全面

1. 引言 这个程序的适用面不是很广,但对于域名爱好者,我想这会是一个不错的工具。 查询一个域名的Whois,这样的工具有很多。但是显示的数据却是有点差强人意,一次偶然的机会发现了 who.cx 这个whois工具,不得不说界面…

Android组件通信——Service(二十七)

1. Service 1.1 知识点 (1)掌握Service与Activity的区别; (2)掌握Service的定义及使用; (3)可以使用ServiceConnection 接口绑定一个Service; (4&#x…

java js 经纬度转换 大地坐标(高斯投影坐标)与经纬度互相转换

项目中有大地坐标(高斯投影坐标)与经纬度互相转换的需求 写了个工具类; 有java和js代码 如图 java代码中将坐标系和带宽已作为参数传入方法,使用时只需调用不同方法: js端没有将坐标系和带宽作为参数 如果有需要可以替换注释地方 或者自行修改为传参方式: 接下来贴代码: jav…

C++笔记之如何给 `const char*` 类型变量赋值

C笔记之如何给 const char* 类型变量赋值 code review! 文章目录 C笔记之如何给 const char* 类型变量赋值1.在C中,如果你要给一个 const char* 变量赋值,你通常有几种方法来做这件事,具体取决于你的需求。下面是一些常见的方法:…

使用JAVA发送邮件

这里用java代码编写发送邮件我采用jar包,需要先点击这里下载三个jar包:这三个包分别为:additionnal.jar;activation.jar;mail.jar。这三个包缺一不可,如果少添加或未添加均会报下面这个错误: C…

芯片学习记录SN74HC14DR

SN74HC14DR 芯片介绍 该设备包含六个独立的逆变器使用施密特触发器输入。每个门执行正逻辑中的布尔函数Y/A("/"表示“非”)。 引脚信息 引脚名称I/O电平功能11AI0~vcc输入21YO0~vcc输出7GND-电源14VCC-3.3v电源(2~6V)Y/A 推荐使用条件 参数…

jwt的使用概念工具类与切入spa项目

jwt的概念 JWT(JSON Web Token)是一种用于身份验证和授权的开放标准,它是一种轻量级的、安全的、基于JSON的令牌机制。 JWT由三部分组成:头部(Header)、载荷(Payload)和签名&#…

C++笔记之std::async的用法

C笔记之std::async的用法 code review! 文章目录 C笔记之std::async的用法1.概念2.C 异步任务的使用示例 - 使用 std::async 和 std::future3. std::launch::async 和 std::launch::deferred 1.概念 std::async 是 C 标准库中的一个函数,用于创建异步任务&#xf…

leetCode 1035.不相交的线 动态规划 + 滚动数组 (最长公共子序列)

1035. 不相交的线 - 力扣(LeetCode) 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足: nums1[i] nums2[j]…

3.4 构造方法

思维导图: 3.4.1 定义构造方法 ### Java中的构造方法 #### **定义与目的** 构造方法,也称为构造器,是一个特殊的成员方法,用于在实例化对象时为对象赋值或执行初始化操作。其主要目的是确保对象在被创建时具有有效和合适的初始状…

学习记忆——数学篇——代数——记忆宫殿——卧室

明确需放置的大件物品 整式、分式 (1)整式:运算、因式定理 (2)分式:运算函数、方程与不等式 (1)函数:一元二次函数、 (2)方程:一元二…

Mysql高级——事务(2)

MySQL事务日志 事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢? 事务的隔离性由锁机制实现。 而事务的原子性、一致性和持久性由事务的 redo 日志和undo 日志来保证。 REDO LOG 称为重做日志,…

默认关闭idea2020的注释doc的rendered view模式(阅读模式)

idea2020的javadoc有了一个rendered模式,在开发的时候感觉很不习惯… 打开sessings,在编辑器的外观中取消这个选项,默认情况下doc就是编辑模式了,点击左侧的图标就会变为rendered view模式