神经网络softmax算法与卷积层

news2024/11/19 14:40:41

多类分类:

多类是分类算法中的一种,它区别于我们的0,1这样子的二进制分类,它会有多个分类的标签,让我们去取其中的一个。

softmax函数:

softmax回归算法是我们的sigmoid回归的推广。

上图就是softmax运行的规范。

 

左边就是我们的softmax回归函数,而我们的右边则是我们sigmoid回归函数。根据之前的规范了解我们知道了softmax回归算法的各个标签的概率之和为1. 

这就是我们逻辑回归与我们的softmax回归的成本函数的不同,很明显的特点就是我们的softmax函数a的数量会远远大于我们的逻辑回归函数。

在神经网络中使用softmax算法: 

在我们使用代码表现这个神经网络时,我们的损失函数要用到

SparseCategoricalCrossentropy()
from tensorflow.keras.losses import SparseCategoricalCrossentropy
model.compile(loss=SparseCategoricalCrossentropy())
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.losses import SparseCategoricalCrossentropy

model = Sequential([
    Dense(units=25, activation="relu"),
    Dense(units=15, activation="relu"),
    Dense(units=1, activation="softmax")
])

model.compile(loss=SparseCategoricalCrossentropy())

model.fit(X,y,epochs=100)

 这样我们就可以按照以前的方法训练我们的神经网络了。但实际上,在tensor flow中有更好的版本,我们会在后面学到。

改进softmax算法:

由于我们在tensorflow里使用的数值计算,一直会存在四舍五入的问题,我们的数值并不能得到一个比较准确的答案,于是我们对代码进行了优化。

import tensorflow as tf
import numpy as np
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.losses import SparseCategoricalCrossentropy

model = Sequential([
    Dense(units=25, activation="relu"),
    Dense(units=15, activation="relu"),
    Dense(units=1, activation="linear")
])

model.compile(loss=SparseCategoricalCrossentropy(from_logits=True))

我们在最后的输出层,不再使用我们的soft Max算法,而是直接用我们的线性激活函数代替它,而在我们的损失算法中加入返回我们的输出值,这样一来,我们从原来的到其中的概率转变为了的到其中的值。但是我们在后面需要得到我们的概率,所以在后面我们需要重新加入一个softmax函数。

model.fit(X,Y,epochs=100)
logits = model(X)
f_x = tf.nn.softmax(logits)

当我们遇到多标签分类问题:

这个样子就是我们的多标签分类问题。

当然我们会想到用三个神经网络我们可以分别得到我们的三个不同的值,比如有没有行人,有没有公交车,有没有汽车。我们就改变了一下我们的激活算法来通过一个神经网络同时得到三个值。

很明显,我们把我们的输出层变成三个神经元,然后把我们的激活函数变成sigmoid激活函数 ,这样我们就可以一次性得到我们的三个值。

注意:多类分类和多标签分类不是同一个。

优化算法:

我们在这里要介绍一种比梯度下降更加优化的算法,可以加快我们的梯度下降的速度。

我们可以看到,\alpha学习率是我们梯度下降的重点,我们要找到一个尽可能快的梯度下降,我们在之前,学习率这个值,我们需要列举多个值,通过比较才能找到一个适合的值,在这里介绍一种新的可以操控\alpha大小的算法,叫做“Adam”算法,它可以自主调节学习率的大小。 

有一个很大的优点就是我们的学习率对于不同的值,它的系数并不是相同的,也就是他们并不是全局的,所以会有很多不同的学习率和不同的梯度下降函数一一对应。

它会根据梯度下降的情况,自动调节,当我们的梯度下降正常时,它会增加我们的\alpha,从而可以更快的梯度下降,但是当我们的梯度下降一直呈现的是来回震荡,这时它会主动减小\alpha,听上去,这似乎非常不可思议,但是这就是Adam算法的运行原理。 

from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.losses import SparseCategoricalCrossentropy
from tensorflow.keras.optimizers import Adam

model = Sequential([
    Dense(units=25, activation="relu"),
    Dense(units=15, activation="relu"),
    Dense(units=1, activation="linear")
])

model.compile(optimizer=Adam(learning_rate=1e-3), loss=SparseCategoricalCrossentropy(from_logits=True))

我们在这里多加了一个优化器,也就是我们的Adam

model.compile(optimizer=Adam(learning_rate=1e-3), loss=SparseCategoricalCrossentropy(from_logits=True))

它是写在我们的损失函数中的,learn_rate指的就是我们的学习率,它是从10^{-3}次。

卷积层(Convolution Layer):

卷积层指的是,我们把一个数据分为多个不同的部分。

这里的卷积层,就是我们的输入层是我们的卷积层,而我们的隐藏层中的神经元,会每个分别扫描不同的部分,而不是全部的卷积层,这也会带来一些优点,第一就是它的运行速度会更快,第二就是所需要的训练的数据更少。

 

 这就是一个典型的卷积层神经网络,我们可以看到我们第一个隐藏层就是一个卷积层,它把我们输入层分为了10个部分,而我们的第二个隐藏层也是一个卷积层,它把我们的第一个隐藏层分为了三个部分,而最后的输出1层,则用了我们的sigmoid函数。

在我们使用不同的类型的层也会为我们的神经网络的多样化与多种不同的用处。

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

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

相关文章

一文搞懂如何自己写一个Python库

你是否曾想过为自己的Python项目编写一个库,以便在不同项目中重复使用代码? 并且能在PyPI仓库中发布,并通过pip install 库名来安装使用 编写Python库可能看起来有些复杂,但实际上并非如此。本文将为你提供一份简明的指南&#x…

【虚拟换衣+论文+代码】2403.OOTDiffusion:高分辨率(1024x768)可控的虚拟试穿(已开源,暂不能训练)

项目地址:https://github.com/levihsu/OOTDiffusion 试用地址:https://ootd.ibot.cn/ 论文地址:2403.OOTDiffusion: 基于衣服融合的可控虚拟试穿潜在扩散 | readpaper arxiv: Outfitting Fusion based Latent Diffusion for Controllable Vir…

如何防御udp攻击

UDP Flood是互联网上最经典的DDoS(Distributed Denial of Service)攻击之一。攻击者在短时间内向目标设备发送大量的UDP报文,导致链路拥塞甚至网络瘫痪。一般的UDP报文由攻击工具伪造,通常在数据段具备相同的特征,另一…

社区店选址标准:如何选择适合你业务的理想位置

选址是实体店成功的关键因素之一,而社区店更是要紧密结合社区的特点来选择。 作为一名鲜奶吧开店5年的创业者,我将为大家分享一些实用的社区店选址标准。 1、社区类型: 首先要明确你的目标客户群体,然后选择与之匹配的社区类型…

SpringCloudAlibaba微服务之Nacos架构及基础概念梳理

SpringCloudAlibaba微服务之Nacos架构及基础概念梳理 文章目录 SpringCloudAlibaba微服务之Nacos架构及基础概念梳理1. 官网介绍1. 简介2. Naocs是什么3. Nacos 地图4. Nacos 生态图 2. Nacos 架构1. 基本架构及概念1. 服务 (Service)2. 服务注册中心 (Service Registry)3. 服务…

基于模拟退火算法(SA)的TSP(Python实现)

本篇文章是博主在最化优学习、人工智能等领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在最优化算…

Kubernetes-2

Kubernetes学习第二天 k8s-21、Kubernetes的核心组件2、pod2.1、什么是pod 3、3种启动pod的方式3.1、命令行启动pod3.1.1、执行下面命令,背后发生了什么? 3.2、启动一个pod背后发生了什么3.3、使用yml文件3.3.1、标准的pod3.3.2、使用部署控制器启动pod3…

web服务,C/S框架,单设备登陆实现方案

背景: 原登陆接口,校验密码通过后,使用springsession记录会话信息,将信息存入在redis中 基于原逻辑进行多设备登陆开发,默认的时候多设备登陆开关开启,即按原来逻辑处理,只要密码登陆校验成功之后,都会将当前的会话信息存入redis中. 当多设备开关关闭时候,同一个账号同一时间只…

Linux运维:实现光盘开机自动挂载、配置本地yum源教程

Linux运维:实现光盘开机自动挂载、配置本地yum源教程 一、光盘开机自动挂载1、检查光驱设备2、创建挂载点3、编辑/etc/fstab文件4、测试挂载 二、配置本地yum源(挂载光盘或ISO文件)1、挂载ISO文件2、创建YUM仓库配置文件3、清理YUM缓存并测试 💖The Begi…

《TCP/IP详解 卷一》第13章 TCP连接管理

目录 13.1 引言 13.2 TCP连接的建立与终止 13.2.1 TCP半关闭 13.2.2 同时打开与关闭 13.2.3 初始序列号 13.2.4 例子 13.2.5 连接建立超时 13.2.6 连接与转换器 13.3 TCP 选项 13.3.1 最大段大小选项 13.3.2 选择确认选项 13.3.3 窗口缩放选项 13.3.4 时间戳选项与…

专业140+总430+电子科技大学858信号与系统考研经验成电电子信息与通信工程,电科大,真题,大纲,参考书。

今年考研成绩出来,初试专业课858信号与系统140,总分430,其余各门分数都比较平稳,总分好于自己估分,应群里很多同学要求,我总结一下自己的复习经验。首先我是一个大冤种,专业课资料学长给了一套&…

【工作实践-07】uniapp关于单位rpx坑

问题:在浏览器页面退出登录按钮上“退出登录”字样消失,而在手机端页面正常;通过查看浏览器页面的HTML代码,发现有“退出登录”这几个字,只不过由于样式问题,这几个字被挤到看不见了。 样式代码中有一行为&#xff1a…

TQ15EG开发板教程:创建运行petalinux2019.1

工程网盘链接:https://pan.baidu.com/s/1vFRpzmbifXt7GypU9aKjeg 提取码:0ylh 首先需要使用与petalinux相同版本的vivado创建工程,与之前不同的是在创建硬件设计时需要勾选上添加bit文件,所以要在生成bit文件之后再创建硬件设计…

爬虫入门到精通_框架篇13(PySpider框架基本使用及抓取TripAdvisor实战)_PySpider下载安装,项目实战

1 PySpider框架基本用法 PySpider框架: 去重处理PyQuery提取错误重试多进程处理代理简洁JavaScript渲染结果监控WebUI管理 安装PySpider: pip install pyspider报错: 主要是async是python3.7的保留字,pyspider库中的有些文件与之重复而出…

仿牛客项目Day02:http、调试、日志、git

http状态码 后端调试 f8:逐行执行 f7:进入语句内部 f9:执行到下一个断点 前端调试 f10:逐行调试 f11:进入语句内部 f8:执行到下一个断点 日志 按照级别开启日志 日志的测试类 比如把application里…

如何在Windows系统部署Jellyfin Server并实现公网访问内网影音文件

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及,各种各样的使用需求也被开发出来&…

Hypermesh2019使用Include文件

1、打开模型,在Includes View查看各个零部件,可以单独显示;最后按D进入display面板显示整个模型; 2、创建新的Include文件,并将车门移入到新创建的Include File中(Originize includes); 3、创建新的Include…

qnx启动中控屏黑屏

bmetrics_service boot metrics service, 用于记录统计启动性能信息,读取/dev/bmetrics可以获取到这些信息 # use memorydump memorydump Sets the debug cookies, copies MMU info into reset_info asinfo, sets the secure monitor(TZ) dump buffer, starts tracelogger Usa…

【好书推荐-第十期】《AI绘画教程:Midjourney使用方法与技巧从入门到精通》

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公众号:洲与AI。 🎈 本文专栏:本文收录…

怎么会有这么多的Windows系统版本,傻傻分不清!

Win10的各个版本之间的区别主要体现在功能、适用场景和面向的用户群体上。以下是各版本之间的详细区别: Windows 10 家庭版(Windows 10 Home) 主要功能:包含Windows 10的基本功能,如全新的开始菜单、Edge浏览器、Windows Hello生物特征认证登录以及虚拟助手Cortana。此外,…