码迷,mamicode.com
首页 > 其他好文 > 详细

5.1 卷积神经网络简介

时间:2019-02-16 13:51:34      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:line   optimize   ras   sof   none   hot   ams   test   image   

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

5.1 卷积神经网络简介

标签:line   optimize   ras   sof   none   hot   ams   test   image   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!