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 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 卷积、池化、全连接的基本认识及最简单的手写体识别: -> 正文阅读

[人工智能]卷积、池化、全连接的基本认识及最简单的手写体识别:

卷积、池化、全连接的基本认识及最简单的手写体识别:


简单的记录下学习笔记:

? 卷积神经网络跟普通的神经网络类似,都具有可学习的权重(w)和偏置(b)。每个神经元都可接收一些输入,并做一些运算,输出是每个分类的分数。

卷积神经网络通常包括:

数据输入层:

? 本层的作用是对图像进行预处理,例如:去均值、归一化、PCA/白化。

? 去均值:将图像的中心拉至0点,即将每一张图片的特征都减去全部训练集集合的均值,使图像各个维度的中心都为原点。

? 归一化:保证所有的维度数据变化都在一个变化幅度上,即对所有的维度的数据都除以所处维度的标准差。另一种方式是除以数据的最大值,保证变化幅度在0-1之间。

? PCA/白化:PCB用于降维,白化是对数据各个特征轴上的幅度归一化
PCA:数据在低维线性空间上的正交投影(投影线垂直于投影面),这个线性空间被称为主子空间,使得投影数据的方差被最大化。通过矩阵的乘法用于降维。

卷积层:

? 图片与卷积核重合区域内相对应的每一个像素值,乘卷积核内相对应点的权重,然后求和, 再加上偏置后,最后得到输出矩阵中的一个像素值。

池化层:

? 通常图片特征的维度很大,所以将特征切成几个区域,取其最大值或平均值,得到新的、维度较小的特征。分为最大池化和平均池化,最大池化和平均池化:

? 最大池化,取每一个区域矩阵中的最大值为此矩阵的特征值。

? 平均池化,取每一个区域矩阵中的平均值为此矩阵的特征值。

全连接层:

? 把所有局部特征结合变成全局特征,用来计算最后每一类的得分。

最简单的手写体识别:

# -*- coding:utf-8 -*-    
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
from tensorflow.examples.tutorials.mnist import input_data

# number from 0 to 9:
mnist = input_data.read_data_sets('MNIST_data/', one_hot=True)


#   tf.Variable(initializer,name),参数initializer是初始化参数,name是可自定义的变量名称
#   tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
#                 输出张量的形状 正态分布的均值 正态分布的标准差 输出类型 随机数种子 操作名称
#   tf.zeros( shape,dtype=tf.float32,name=None)   创建元素全为0的张量
#               张量形状 输出类型 操作名称
#   tf.matmul()用于矩阵相乘


#   实现 ouputs = w*x+b   注意:w、x此时为矩阵
def add_layer(inputs, in_size, out_size, activation_function=None):  #activation_function为激活函数
    Weights = tf.Variable(tf.random_normal([in_size, out_size]))
    bises = tf.Variable(tf.zeros([1, out_size]) + 0.1)
    Wx_plus_b = tf.matmul(inputs, Weights) + bises

    if activation_function is None:
        outputs = Wx_plus_b
    else:
        outputs = activation_function(Wx_plus_b)

    return outputs


# 计算准确度
def compute_accuracy(x, y):
    global prediction
    y_pre = sess.run(prediction, feed_dict={xs: x})
    correct_prediction = tf.equal(tf.argmax(y_pre, 1), tf.argmax(y, 1))
    #tf.equal(a,b)对a、b进行对比,若相等返回Ture,不相等返回False  tf.argmax()返回每一行最大元素索引
    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
    #tf.reduce_mean()用于计算图像的平均值,tf.cast()表示将张量转换为别的type类型
    result = sess.run(accuracy, feed_dict={xs: x, ys: y})
    return result


# 定义节点准备接收数据
xs = tf.placeholder(tf.float32, [None, 784])  # 28*28
ys = tf.placeholder(tf.float32, [None, 10])  # 10个输出

# 定义 loss 表达式
prediction = add_layer(xs, 784, 10, tf.nn.softmax)  # softmax常用于分类

cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(prediction), reduction_indices=[1]))
train = tf.train.GradientDescentOptimizer(0.3).minimize(cross_entropy)
# 这一行定义了用梯度下降法的方式去减少 loss,学习率是 0.1

sess = tf.Session()
sess.run(tf.initialize_all_variables())

for i in range(2000):
    batch_xs, batch_ys = mnist.train.next_batch(100)
    sess.run(train, feed_dict={xs: batch_xs, ys: batch_ys})
    if i % 100 == 0:
        print(compute_accuracy(mnist.test.images, mnist.test.labels))

这里注意,本文使用的是tensorflow2.0版本,如果想要使用1.0版本的话,需要将

import tensorflow.compat.v1 as tf
#改为
import tensorflow as tf 

基本流程如下:

先定义相关结构:

? 1.训练的数据
? 2.定义节点准备接收数据
? 3.定义神经层:隐藏层和预测层
? 4.定义 loss 表达式
? 5.选择 optimizer 使 loss 达到最小

? 随后,用for循环迭代2000次循环(每20次循环输出一次),将输入的x,y通过feed_dict填充到节点xs、ys中,再用train进行训练,逐渐减小loss,再将xs、ys投入到compute_accuracy(x, y),计算出每轮的精度。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 12:03:49  更:2021-08-30 12:06:26 
 
开发: 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/1 10:30:12-

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