深度学习-----从零开始实现识别手写字体任务(二)卷积神经网络的层级结构

层级结构

1.数据输入层:Input layer

2.卷积层:Convolutional layer

3.激活层:Reluctant layer

4.池化层:Pooling layer

5.全连接层:FC layer

一.数据输入层:对原始数据进行初步处理

1.灰度化

图片一般由三维矩阵组成(width,height,3),其中“3”为通道数,可以理解为图片的高度。3为RGB三色通道,将3通道转化为单通道为灰度化。

2.归一化

在神经网络中经常会使用sigmoid函数当做激活函数,sigmoid函数的函数值在[0, 1]之间,当输入{20,30,40,50,60}等远大于1的数据时,经过sigmoid函数的值将会非常的接近甚至是相等,这样就会无法起到应有的训练效果,将数据归一化就可以较好的解决这个问题。而且归一化可以使神经网络更快的收敛。

二.卷积层(核心):一种可以提取图像特征的数学运算

1.卷积核

原图像经过卷积核后得到这个图像的特征图谱。

2.卷积核的深度

卷积核的个数,单个卷积核提取图像的部分特征,这在多数情况下,特征提取是不充分的,所以通过增加卷积核的个数,提取多个图像特征。

3.卷积运算

卷积核理解成权重矩阵的话,那么卷积运算就相当于加权求和的过程。

在这里插入图片描述

4.步幅

卷积核每次滑动的长度。

三.激活层

上面所述的运算其实是一种线性的运算,而自然中很多的关系都是非线性的,因此,需要给上面的计算结果通过一个激活函数加一个非线性的关系。激活函数是参考了生物上神经元的机制,在生物意义上的神经元中,只有前面的树突传递的信号大于神经元的阈值时,下一个神经元才会被激活。与之类似,激活函数RELU当输入小于0时,输出为零,即失效;大于零输出则为本身。

四.池化层

 池化层是对输入的数据进行压缩,提取主要特征的过程。

最大池化:对2*2的矩阵进行扫描取最大值。

最小池化:对2*2的矩阵进行扫描取平均值。

注意:池化层的输入一般是经过激活函数的卷积层输出。

五.全连接层

卷积取的是局部特征,全连接就是把以前的局部特征重新通过权值矩阵组装成完整的图。
因为用到了所有的局部特征,所以叫全连接。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
卷积神经网络(Convolutional Neural Networks,简称CNN)是一种在图像处理中非常重要的神经网络结构。它可以用于手写体数字识别任务。下面是一个使用CNN进行手写体数字识别的示例: ```python import tensorflow as tf from tensorflow.keras.datasets import mnist # 加载MNIST数据集 (x_train, y_train), (x_test, y_test) = mnist.load_data() # 数据预处理 x_train = x_train.reshape(-1, 28, 28, 1) / 255.0 x_test = x_test.reshape(-1, 28, 28, 1) / 255.0 y_train = tf.keras.utils.to_categorical(y_train, num_classes=10) y_test = tf.keras.utils.to_categorical(y_test, num_classes=10) # 构建卷积神经网络模型 model = tf.keras.models.Sequential([ tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Flatten(), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ]) # 编译模型 model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy']) # 训练模型 model.fit(x_train, y_train, epochs=5, batch_size=32, validation_data=(x_test, y_test)) # 评估模型 test_loss, test_acc = model.evaluate(x_test, y_test) print('Test accuracy:', test_acc) ``` 这个示例使用了TensorFlow和Keras库来构建和训练一个卷积神经网络模型,用于手写体数字识别任务模型首先加载了MNIST数据集,并进行了数据预处理。然后,通过添加卷积、池化、全连接和输出来构建了一个简单的卷积神经网络模型。最后,使用训练集对模型进行训练,并使用测试集评估模型的准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值