5.1 卷积神经网络简介

5-1 实例化一个小型的卷积神经网络

from keras import layers
from keras import models
Using TensorFlow backend.
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation=‘relu‘, input_shape = (28, 28, 1)))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64, (3, 3), activation=‘relu‘))
model.add(layers.MaxPooling2D((2,2)))
model.add(layers.Conv2D(64, (3, 3), activation=‘relu‘))
model.summary()
_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
conv2d_1 (Conv2D)            (None, 26, 26, 32)        320
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 13, 13, 32)        0
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 11, 11, 64)        18496
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 5, 5, 64)          0
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 3, 3, 64)          36928
=================================================================
Total params: 55,744
Trainable params: 55,744
Non-trainable params: 0
_________________________________________________________________

5-2 在卷积神经网络上添加分类器

# 将3D输出展平为1D
model.add(layers.Flatten())

# 贴加两个全连接层
model.add(layers.Dense(64, activation=‘relu‘))
model.add(layers.Dense(10, activation=‘softmax‘))
model.summary()
_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
conv2d_1 (Conv2D)            (None, 26, 26, 32)        320
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 13, 13, 32)        0
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 11, 11, 64)        18496
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 5, 5, 64)          0
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 3, 3, 64)          36928
_________________________________________________________________
flatten_1 (Flatten)          (None, 576)               0
_________________________________________________________________
dense_1 (Dense)              (None, 64)                36928
_________________________________________________________________
dense_2 (Dense)              (None, 10)                650
=================================================================
Total params: 93,322
Trainable params: 93,322
Non-trainable params: 0
_________________________________________________________________

5-3 在MNIST图像上训练卷积神经网络

from keras.datasets import mnist
from keras.utils import to_categorical

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

train_images = train_images.reshape((60000, 28, 28, 1))
train_images = train_images.astype(‘float32‘) / 255

探究下数据集

import matplotlib.pyplot as plt
%matplotlib inline

img = train_images[0]
img.shape
(28, 28, 1)
img = img.reshape((28, 28))
img.shape
(28, 28)
plt.imshow(img, cmap=‘Greys‘, interpolation=None)
<matplotlib.image.AxesImage at 0x1386036a0>

train_labels[0]
5

可以看见显示的第一张图片和标签都是5

train_images = train_images.astype(‘float32‘) / 255

test_images = test_images.reshape((10000, 28, 28, 1))
test_images = test_images.astype(‘float32‘) / 255

# to_categorical用于one-hot编码
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
# one-hot编码后的效果
train_labels[0]
array([0., 0., 0., 0., 0., 1., 0., 0., 0., 0.], dtype=float32)
model.compile(optimizer=‘rmsprop‘, loss=‘categorical_crossentropy‘, metrics=[‘accuracy‘])
model.fit(train_images, train_labels, epochs=5, batch_size=64)
Epoch 1/5
60000/60000 [==============================] - 101s 2ms/step - loss: 0.9779 - acc: 0.6717
Epoch 2/5
60000/60000 [==============================] - 104s 2ms/step - loss: 0.2749 - acc: 0.9148
Epoch 3/5
60000/60000 [==============================] - 106s 2ms/step - loss: 0.1478 - acc: 0.9539
Epoch 4/5
60000/60000 [==============================] - 70s 1ms/step - loss: 0.1037 - acc: 0.9678
Epoch 5/5
60000/60000 [==============================] - 47s 791us/step - loss: 0.0811 - acc: 0.9742

<keras.callbacks.History at 0x1386cb160>
test_loss, test_acc = model.evaluate(test_images, test_labels)
10000/10000 [==============================] - 4s 372us/step
test_acc
0.9431

原文地址:https://www.cnblogs.com/shayue/p/10387219.html

时间: 2024-10-30 06:55:11

5.1 卷积神经网络简介的相关文章

【深度学习笔记】第 6 课:卷积神经网络简介

到目前为止,我们已经大致地介绍了一些新网络 但是,如果你对数据已有一些了解,比如它是一张图片,或者一系列事物,你可以做得更好 颜色 想法非常简单,如果你的数据是某种结构,则你的网络没有必要从零开始学习结构,它会表现得更好 例如,假设你想尝试分类这些字母,你知道颜色并不是让A成为A的重要因素 你认为怎么样会使得你的分类器更容易学习? 一个使用彩色照片的模型还是只使用灰度的模型 直观地说,如果一个字母表现为你从未见过的颜色,当你尝试分类字母时,忽略颜色的特性将使得模型变得更加容易 统计不变性 这是另

卷积神经网络简介

相比于MLP(多层感知器)的神经网络,CNN(卷积神经网络)有卷积层和池化层. 在构建MNIST字符集的识别训练过程中,卷积神经网络采用了: 输入层 卷积层1 池化层1 卷积层2 池化层2 平坦层 隐层层 输出层 输入层输入二维的图像,28X28的一个矩阵. 在卷积层1,将输入层的一个矩阵图像,采用16个filter weight产生的随机5X5的零一矩阵和输入层的28X28的矩阵相乘加,变成16个28X28的矩阵图像.类似滤镜,用于提取输入图像的特征,如边缘,线条和角. 在层化层1,将卷积层1

技术向:一文读懂卷积神经网络CNN

转自:http://dataunion.org/11692.html 作者:张雨石 自今年七月份以来,一直在实验室负责卷积神经网络(Convolutional Neural Network,CNN),期间配置和使用过theano和cuda-convnet.cuda-convnet2.为了增进CNN的理解和使用,特写此博文,以其与人交流,互有增益.正文之前,先说几点自己对于CNN的感触.先明确一点就是,Deep Learning是全部深度学习算法的总称,CNN是深度学习算法在图像处理领域的一个应用

TensorFlow实战-TensorFlow实现卷积神经网络CNN-第5章

第5章-TensorFlow实现卷积神经网络CNN 5.1 卷积神经网络简介 卷积神经网络CNN最初是为了解决图像识别等问题设计的,当然现在的应用已经不限于图像和视频,也可以用于时间序列信号,比如音频信号.文本数据等. 在深度学习出现之前,必须借助SIFT.HoG等算法提取出有效而丰富的特征,再集合SVM等机器学习算法进行图像识别. CNN作为一个深度学习架构被提出来最初的诉求是降低对图像数据预处理的要求,以及避免复杂的特征工程.CNN最大的特点是在于卷积的权值共享结构,可以大幅减少神经网络的参

SIGAI深度学习第七集 卷积神经网络1

讲授卷积神经网络核心思想.卷积层.池化层.全连接层.网络的训练.反向传播算法.随机梯度下降法.AdaGrad算法.RMSProp算法.AdaDelta算法.Adam算法.迁移学习和fine tune等. 大纲: 卷积神经网络简介 视觉神经网络的核心思想 卷积神经网络的核心思想 卷积运算 卷积层的原理 多通道卷积 池化层的原理 全连接层 卷积网络结构 训练算法简介 卷积层的反向传播 池化层的反向传播 全连接层的反向传播 完整的反向传播算法 随机梯度下降法 参数值初始化 学习率的设定 梯度下降法的改

DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解

DeepLearning tutorial(4)CNN卷积神经网络原理简介+代码详解 @author:wepon @blog:http://blog.csdn.net/u012162613/article/details/43225445 本文介绍多层感知机算法,特别是详细解读其代码实现,基于python theano,代码来自:Convolutional Neural Networks (LeNet).经详细注释的代码和原始代码:放在我的github地址上,可下载. 一.CNN卷积神经网络原理

卷积神经网络_(2)_分类与回归_几类经典网络简介

1.经典神经网络有:2012年提出的AlexNet和2014年提出的VGGNet,结构图分别如下: 2.分类与回归: (1)分类(classfication):就是经过经过一系列的卷积层和池化层之后,再经过全连接层得到样本属于每个类的得分,再用比如softmax分类其对其进行分类: (2)回归(regression):相当于用一个矩形框来框住要识别的物体,即localization; 如下: 这里,回归用了拟合的方法,即给定输入中物体的位置(x,yw,h),再用卷积网络的输出(x',y',w',

卷积神经网络分类与回归任务的应用简介

location 对输入图像定位,找到盒子坐标(x,y,w,h):Clssificaion and Location的最后一层是的特征做两件事,一个是分类,一个是定位.         训练时使用已有的模型,也就是最后一层全联接之前所有的参数都用已有模型的,然后在这个基础上进行微调(fine tune),使其向着想要的网络去收敛.               分类时,softmax计算loss,随机梯度下降SGD反向传播更新参数.测试时同时得到分类得分和定位(坐标).              

CNN卷积神经网络在自然语言处理的应用

摘要:CNN作为当今绝大多数计算机视觉系统的核心技术,在图像分类领域做出了巨大贡献.本文从计算机视觉的用例开始,介绍CNN及其在自然语言处理中的优势和发挥的作用. 当我们听到卷积神经网络(Convolutional Neural Network, CNNs)时,往往会联想到计算机视觉.CNNs在图像分类领域做出了巨大贡献,也是当今绝大多数计算机视觉系统的核心技术,从Facebook的图像自动标签到自动驾驶汽车都在使用. 最近我们开始在自然语言处理(Natural Language Process