IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> “智能”(5)——ReLU激活函数&卷积神经网络 -> 正文阅读

[人工智能]“智能”(5)——ReLU激活函数&卷积神经网络

一、ReLU激活函数

公式: f ( x ) = m a x ( 0 , x ) f(x) = max(0,x) f(x)=max(0,x)

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

1. 为什么要用ReLU激活函数

由于sigmoid函数在输入远离中心点时导数会很小,会出现梯度消失的现象。使用ReLU激活函数时则不会出现梯度消失的现象。
但是当输入为负数时ReLU函数会死掉,拐点不可导。所以需要做特殊处理。
ReLU还有其他变型可参考: ReLU函数及变型.

二、卷积神经网络

1、卷积???卷个der

a 、卷积干什么

在这里插入图片描述
注:图片截自B站up主ELe实验室,讲课视频。
由上图可知通过卷积核卷积得出的结果可以将图像的特征提取出来上图卷积核所提取出来的特征为竖直特征。

b、怎么卷积

在这里插入图片描述
如图所示: 卷积就是用卷积核吧图像上的和卷积核上的数字相乘再相加。全部如此操作即可得出以下。(注:三维的数据通过三维的卷积核卷积出来的是一维的数据
在这里插入图片描述

2、LeNet-5卷积神经网络结构(卷积核与通道数必须一致)

在这里插入图片描述
以上只是各个层的中文翻译,不完全是LeNet-5的真实模型。真实原始模型如下 :
在这里插入图片描述

由此图我们可以看出卷积神经网络包含的基本模块:卷积层 、池化层(下采样层)、全连接层。

a、卷积层

  1. 输入图片: 32*32
  2. 核大小: 5*5
  3. 核个数: 6
  4. 输出大小:(32-5+1)= 28
    公式: m = n ? f + 1 m = n - f + 1 m=n?f+1 (m 表示结果边长、n 表示原始边长、f 表示核边长)

b、池化层(下采样层)

在这里插入图片描述
池化层就是如上图所示的蓝色方框,对于方框内的数据进行处理(1.取方框内最大值 2. 取方框内平均值。等等等等…)

c、全连接层

将一系列卷积池化再卷积再池化后所得出的数据进行平铺后送入神经网络中进行学习,找出分类。

三、代码

from keras.datasets import mnist			#调用手写体数字数据集
import numpy as np
from keras.models import Sequential         #堆叠神经网络的序列
from keras.layers import Dense
from numpy.core.fromnumeric import reshape              
from tensorflow.keras.optimizers import SGD
import matplotlib.pyplot as plt							#绘图
from tensorflow.keras.utils import to_categorical		#把数字变成onehot编码
from keras.layers import Conv2D							#二维卷积层
from keras.layers import AveragePooling2D				#二维平均池化层
from keras.layers import Flatten            			#数据平铺
(X_train , Y_train),(X_test, Y_test) = mnist.load_data()

X_train = X_train.reshape(60000,28,28,1)/255.0
X_test = X_test.reshape(10000,28,28,1)/255.0

Y_train = to_categorical(Y_train,10) 
Y_test = to_categorical(Y_test,10)

model = Sequential()
model.add(Conv2D(filters=6,kernel_size=(5,5),strides=(1,1),input_shape = (28,28,1),padding='valid',activation='relu'))
model.add(AveragePooling2D(pool_size=(2,2)))
model.add(Conv2D(filters=16,kernel_size=(5,5),strides=(1,1),padding='valid',activation='relu'))
model.add(AveragePooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(units=120, activation='relu'))
model.add(Dense(units=84, activation='relu'))
model.add(Dense(units=10, activation='softmax'))


model.compile(loss= 'categorical_crossentropy' , optimizer=SGD(lr = 0.08), metrics=['accuracy'])  #代价函数-均方误差  优化器-梯度下降  评估标准-准确度

model.fit(X_train,Y_train,epochs=50,batch_size=128)        #回合数epochs(所有数据处理完表示一个回合)     批量数batch——size(每次处理多少个数据)



loss, accuracy = model.evaluate(X_test,Y_test)
print("loss"+str(loss))
print("accuracy"+str(accuracy))

分析:

1、 model.add(Conv2D(filters=6,kernel_size=(5,5),strides=(1,1),input_shape = (28,28,1),padding=‘valid’,activation=‘relu’))

filters: 卷积核数量
kernel_size: 卷积核尺寸
strides: 每次进行卷积后移动步长
input_shape: 输入图像尺寸(只需要在最开始输入数据时使用即可)
padding: 填充模式(valid:不加填充模式)
activation: 激活函数

2、model.add(Flatten())
平铺数据变成一维数组


以上是B站ele实验室 上课学习笔记,大部分图片来自上课课件截图。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-14 14:01:52  更:2021-08-14 14:03:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 21:02:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码