从零开始的深度学习之旅(1)

news2024/12/23 11:05:23

目录

  • 0.前言
  • 1.单层神经网络
    • 1.1 单层神经网络基础(线性回归算法)
    • 1.2 torch.nn.Linear实现单层回归神经网络的正向传播
  • 2.二分类神经网络:逻辑回归
  • 2.1 逻辑回归与门代码实现
  • 2.2 符号函数
      • 2.2.1 sign函数
      • 2.2.2 Relu函数
      • 2.2.3 tant函数
  • 3. 多分类神经网络:Softmax回归

0.前言

从本博客开始,以菜菜九天的深度学习课为基础,从零开始学习深度学习,好好地把握知识点,让自己学有所成.

1.单层神经网络

1.1 单层神经网络基础(线性回归算法)

    神经网络是模仿人类大脑结构所构建的算法,在人脑里,我们有轴突连接神经元,在算法中,数据从神经网络的左侧输入,让神经元处理之后,从右侧输出结果.如下图所示:
在这里插入图片描述
    线性回归算法是机器学习中的回归类算法,多元线性回归指的就是一个样本对应多个特征的线性回归问题。假设我们的数据现在就是二维表,对于一个有特征的样本而言,它的预测结果可以写作一个方程:在这里插入图片描述   w和b被统称为模型的权重,其中b被称为截距,也叫做偏差,w1到wn被称为回归系数,也叫作权重,xi1到xin是样本i上的不同特征。线性回归的任务,就是构造一个预测函数来映射输入的特征矩阵和标签值的线性关系上图的式子转换一下,就变成了单层神经网络:


在这里插入图片描述
     在上述过程中,左侧的是神经网络的输入层。输入层由众多承载数据用的神经元组成,数据从这里输入,并流入处理数据的神经元中。在所有神经网络中,输入层永远只有一层,且每个神经元上只能承载一个特征或一个常量(通常都是1).
  右侧的是输出层,输出层由大于等于一个神经元组成,我们可以从这一层来获取预测结果。输出层的每个神经元上都承载着单个或多个功能,可以处理被输入神经元的数据。在线性回归中,这个功能就是“加和”,当我们把加和替换成其他的功能,就能够形成各种不同的神经网络.

1.2 torch.nn.Linear实现单层回归神经网络的正向传播

特征和标签数据如下所示:

x0x1x2Y
100-0.2
110-0.05
101-0.05
1110.1
import torch

X = torch.tensor([[0,0],[1,0],[0,1],[1,1]], dtype = torch.float32)

output = torch.nn.Linear(2,1)

# output.weight #查看生成的w
# output.bias #查看生成的b
# output = torch.nn.Linear(2,1,bias=False) //如果我们希望不拟合常量b,在实例化时将参数bias设置为False即可

# torch.random.manual_seed(420) #人为设置随机数种子

zhat = output(X)


在这里插入图片描述

注意事项:

  1.nn.Linear需要输入两个参数,分别是(上一层的神经元个数,这一层的神经元个 数)。上一层是输入层,因此神经元个数由特征的个数决定(2个)。这一层是输出层,作为回归神经网络,输出层只有一个神经元。因此nn.Linear中输入的是(2,1)

  2.只定义了X,没有定义w和b。所有nn.Module的子类,形如nn.XXX的层,都会在实例化的同时随 机生成w和b的初始值.

  3.output.weight #查看生成的w output.bias #查看生成的b

  4.torch.random.manual_seed(100) #人为设置随机数种子

  5.人为设置随机数种子中间空间的值可以随便填写,设置随机数的目的在于随机生成的W和b会固定下来,不然在调用Linear函数时,每次运行都会产生不同的随机数

2.二分类神经网络:逻辑回归

     线性回归是统计学经典算法,它能够拟合出一条直线来描述变量之间的线性关系。但在实际中,变量之间的关系通常都不是一条直线,而是呈现出某种曲线关系。为了更好的拟合曲线,其中提到了Sigmoid函数,图像如下图:

在这里插入图片描述
   从图像上就可以看出,当自变量 趋近正无穷时,因变量趋近于1,而当趋近负无穷时, 趋近于0,这使得sigmoid函数能够将任何实数映射到(0,1)区间,让sigmoid函数能够将连续性变量转化为离散型变量,也就是化能够将回归算法转化为分类算法.
   将线性回归方程的结果作为自变量带入sigmoid函数,得出的数据就一定是(0,1)之间的值。此时,只要我们设定一个阈值(比如0.5),规定大于0.5时,预测结果为1类,小于0.5时,预测结果为0类,则可以顺利将回归算法转化为分类算法.此时,我们的标签就是类别0和1了.这个阈值可以自己调整,在没有调整之前,一般默认0.5.
在这里插入图片描述

2.1 逻辑回归与门代码实现

给定特征和标签
在这里插入图片描述

import torch

#特征张量X,定义数据类型
X = torch.tensor([[1,0,0],[1,1,0],[1,0,1],[1,1,1]], dtype = torch.float32)

#标签Y
andgate = torch.tensor([0,0,0,1], dtype = torch.float32)

#定义w,预定义的一组值,更好的看出结果
w = torch.tensor([-0.2,0.15,0.15], dtype = torch.float32)

def LogisticR(X,w):
    zhat = torch.mv(X,w)  #矩阵与向量相乘得到z
    
    #设置阈值为0.5, 使用列表推导式将值转化为0和1
    andhat = torch.tensor([int(x) for x in sigma >= 0.5], dtype = torch.float32) 
	
    return sigma, andhat

在这里插入图片描述
在这里插入图片描述

2.2 符号函数

     在上述的代码中,我们知道了Sigmoid实现了将连续型数值转换为分类型数值的作用,除了Sigmoid函数之外,还有许多其他的函数可以被用来将连续型数据分割为离散型数据,如下面的图片所示.

2.2.1 sign函数

在这里插入图片描述

2.2.2 Relu函数

在这里插入图片描述
在这里插入图片描述

2.2.3 tant函数

在这里插入图片描述

3. 多分类神经网络:Softmax回归

    之前介绍分类神经网络时,我们只说明了二分类问题,即标签只有两种类别的问题(0和1,猫和狗,虽然在实际应用中许多分类问题都可以用二分类的思维解决,但依然存在很多多分类的情况.
    最典型的就是手写数字的识别问题。计算机在识别手写数字时,需要对每一位数字进行判断,而个位数字总共有10个,所以手写数字的分类是十分类问题,一般分别用0~9表示。
     真实使用的神经网络往往是一个庞大的算法,建立一个模型就会耗费很多时间,因此必须建立很多个模型来求解的方法对神经网络来说就不够高效,我们有更好的方法来解决这个问题,那就是softmax回归。

     Softmax函数是深度学习的基础,它是神经网络进行多分类时,默认放在输出层中处理数据的函数。假设现在神经网络是用于三分类数据,且三个分类分别是苹果,香蕉和橘子,序号则分别是分类1、分类2和分类3。则使用softmax函数的神经网络的模型会如下所示:
在这里插入图片描述
     与二分类一样,我们从左侧输入特征,从右侧输出概率,通过softmax函数来进行计算。softmax的输出层有三个神经元,分别输出该样本的真实标签是苹果和香蕉和橘子的概率 。在多分类中,神经元的个数与标签类别的个数是一致的,如果是十分类,在输出层上就会存在十个神经元,分别输出十个不同的概率。此时,样本的预测标签就是所有输出的概率中最大的概率对应的标签类别。
在这里插入图片描述
     当我们有三个分类,分别是苹果,橘子和香蕉的时候,样本i被分类为橘子的概率为:在这里插入图片描述

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

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

相关文章

Vue:实战快速上手

采用实战模式并结合ElementUI 组件库,将所需知识点应用到实际中,以最快速度掌握Vue的使用; 桌面化应用 ElementUI: https://element.eleme.cn/#/zh-CN/ 弹窗 LayUI 的 layer (由于官网已下架,在此使用镜像): https://www.layui.s…

【网页设计】基于HTML在线图书商城购物项目设计与实现_(图书商城10页) bootstarp响应式

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 在线商城购物 | 水果商城 | 商城系统建设 | 多平台移动商城 | H5微商城购物商城项目 | HTML期末大学生网页设计作业,Web大学生网页 HTML&a…

[附源码]java毕业设计停车场信息管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

抢购软件使用方法(如何开发抢购软件)

如果做抢购软件的话需要好的协议以及算法,我用的这份协议目前非常稳定,所以今天给大家讲解下抢购软件的流程以及使用方法 01软件设置选项详解 一、无障碍服务 二、使用网路时间 软件第一行一般都是当前设备比XX慢了(快了)XXms&…

Vue3铺垫知识【ES6 模块化、Promise、async/await、EventLoop、宏任务和微任务、总结】

文章目录ES6 模块化1. 回顾:node.js 中如何实现模块化2. 前端模块化规范的分类3. 什么是 ES6 模块化规范4. 在 node.js 中体验 ES6 模块化5. ES6 模块化的基本语法5.15.1.1 默认导出5.1.2 默认导入5.1.3 默认导出的注意事项5.1.4 默认导入的注意事项5.25.2.1 按需导…

Python:Linux下安装Anaconda,可多人使用(内容几乎完整)

前言 前言属于与内容无关的写作意图。要看正文,请直接跳转至本文主要内容。 很久不见。最近手里有很多事,比如,体检、装机、加班。再加上我现在为了速记,会把东西记到跨平台的笔记软件“OneNote”(大画板&#xff0c…

尚医通 (二十六) --------- 科室接口开发

目录一、上传科室接口1. 添加科室基础类2. 上传科室二、查询科室接口三、删除科室接口一、上传科室接口 1. 添加科室基础类 A、添加 model 说明:由于实体对象没有逻辑,我们已经统一导入 com.fancy.yygh.model.hosp.Department B、添加 repository 添…

多元正态分布

最广为使用的基于模型的聚类方法依赖于多元正态分布。多元正态分布是对p个变量正态分布的一种推广。该分布使用一组均值和协方差矩阵∑定义。协方差矩阵是变量间相关性的度量. 协方差矩阵∑由p个方差以及所有变量对的协方差σi,ji≠j)构成。矩阵的行和列均用变量表…

闲活一:一步登天

标题不希望能被人搜到,因为目前没有任何技术含量,可行性也偏低,纯纯的预研阶段。 项目起步阶段是最无从下手的阶段,还是先明确大目标。我这个赛车要做什么,怎样去做。 做什么 我脑中蹦出的大方向是这样的 玩家体…

初识Matter协议

初识Matter协议什么是MatterMatter有什么用Matter的核心优势Matter网络的组网方式什么是Matter Matter的概念最初在2019年12月被提出,当时被称为CHIP(Connected Home Over IP),之后在2021年5月作为全新的连接标准被正式提出。 CHIP是由AWS、Google、App…

1. 算法简介

1.2 二分查找 二分查找是一种算法,其输入是一个有序的元素列表。如果要查找的元素包含在列表中,二分查找返回其位置; 否则返回null 。 使用二分查找时,最多需要检查log n 个元素。 仅当列表是有序的时候,二分查找才管用。 完整…

XCTF1-web php

场景一:simple_php 题目描述 小宁听说php是最好的语言,于是她简单学习之后写了几行php代码。 进入场景 给了php代码,分析一下 GET传入两个参数a,b aaa_GET[“a”];其中的是为了防止没有$_GET[‘a’]出现错误提示 $a0 and a:a等于0,且a是…

Spring之Bean生命周期之二--- Instantiation阶段

在BeanFactory中,主要的流程就是创建Bean的过程, // 核心方法: 创建Bean实列对象,并且生命周期的动作大部分都在这里。Object beanInstance doCreateBean(beanName, mbdToUse, args);Bean的生命周期包括: 实例化设置属性值初始化值销毁 实例化Bean在…

[附源码]java毕业设计网上报销管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

西电计网ARP欺骗实验

ARP欺骗实验 文章目录ARP欺骗实验Cloud云设备连接本机网卡ARP欺骗实验Cain基本设置主机发现ARP欺骗的原理实现Cain干了啥DNS欺骗实验Cain干了啥欺骗转发实验Cloud云设备 想查一下华为官方使用手册,看看云到底是个啥,但是查不到. 在ensp模拟器中云设备这篇博客上这样写的: eNS…

基于K-means(K均值)聚类算法的图像特征分割研究-含Matlab代码

⭕⭕ 目 录 ⭕⭕✳️ 一、引言✳️ 二、K-means 聚类算法原理✳️ 三、图像聚类分割实例✳️ 四、参考文献✳️ 五、Matlab代码获取✳️ 一、引言 图像分割是一个跨学科的研究方向,涉及人工智能、机器学习、模式识别等。随着计算机技术的不断发展,图像分…

java毕业设计——基于java+Socket+sqlserver的网络通信系统设计与实现(毕业论文+程序源码)——网络通信系统

基于javaSocketsqlserver的网络通信系统设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于javaSocketsqlserver的网络通信系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。 文章目录: 基于jav…

2022-11-20 每日打卡:Leetcode第 320 场周赛

2022-11-20 每日打卡:Leetcode第 320 场周赛 题解主要参考:https://www.bilibili.com/video/BV1A3411f7H3/?spm_id_from333.999.0.0&vd_source6fcf135348bf11256bcd756a96851533 6241. 数组中不等三元组的数目 对于排列组合问题,关注“…

实现微服务:匹配系统(中)

目录 1、同步两个玩家的位置思路解析 2、实现了三个棋盘的同步原理 3、初始化一下我们的playerAplayerB 4、什么是线程为什么要用多线程? 5、如何去实现等待两名玩家输入 6、前端向后端发消息 7、在数据库中创建表record 1、同步两个玩家的位置思路解析 除了地…

koa框架(一) 认识koa

koa ​koa是express原班人马打造的轻量、健壮、富有表现力的nodejs框架。目前koa有koa1和koa2两个版本;koa2依赖Node.js 7.6.0或者更高版本;koa不在内核方法中绑定任何中间件,它仅仅是一个轻量级的函数库,几乎所有功能都必须通过…