美文网首页
第一个卷积神经网络

第一个卷积神经网络

作者: noodu | 来源:发表于2019-03-10 13:38 被阅读0次

在前文中我们用全连接网络实现了手写数字的识别。对于图像相关的任务,卷积神经网络CNN能够更好的提取特征,并能减少网络参数, 接下来会对该程序做一些小改动

from __future__ import absolute_import, division, print_function
import tensorflow as tf
from tensorflow.keras.layers import Dense, Flatten, Conv2D
from tensorflow.keras import datasets, layers, models

(train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data()
train_images = train_images.reshape((60000, 28, 28, 1))
test_images = test_images.reshape((10000, 28, 28, 1))

# Normalize pixel values to be between 0 and 1
train_images, test_images = train_images / 255.0, test_images / 255.0

model = models.Sequential([
    layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
    layers.MaxPooling2D((2, 2)),
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.MaxPooling2D((2, 2)),
    layers.Flatten(),
    layers.Dense(64, activation='relu'),
    layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(train_images, train_labels, epochs=5)

主要的改动在model处,加入了2个(卷积层layers.Conv2D + 池化层layers.MaxPooling2D)
卷积层有32个卷积核, 每个尺寸为3x3 ,激活函数是relu, 第一层的输入是28*28的黑白图像,所以通道为1(28,28,1)。如果是彩色图像, 通道为3
池化层的参数为(2,2),从2X2个数值中取出最大的一个, 这样在长,宽两个维度的大小减半。最后依然是通过softmax完成分类。

可能是作者的系统配置问题,运行时出错,cuDnn无法初始化。所以做了些修改

from __future__ import absolute_import, division, print_function

import tensorflow as tf

from tensorflow.keras.layers import Dense, Flatten, Conv2D
from tensorflow.keras import datasets, layers, models

from tensorflow.compat.v1 import ConfigProto
from tensorflow.compat.v1 import InteractiveSession

config = ConfigProto()
config.gpu_options.allow_growth = True
session = InteractiveSession(config=config)

(train_images, train_labels), (test_images, test_labels) = datasets.mnist.load_data()
train_images = train_images.reshape((60000, 28, 28, 1))
test_images = test_images.reshape((10000, 28, 28, 1))

# Normalize pixel values to be between 0 and 1
train_images, test_images = train_images / 255.0, test_images / 255.0

model = models.Sequential([
    layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
    layers.MaxPooling2D((2, 2)),
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.MaxPooling2D((2, 2)),
    layers.Flatten(),
    layers.Dense(64, activation='relu'),
    layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(train_images, train_labels, epochs=5)

相关文章

  • CS231n 卷积神经网络: 架构, 卷积/池化层(上)

    卷积神经网络: 架构, 卷积/池化层(上) 卷积神经网络: 架构, 卷积/池化层(上) 卷积神经网络(CNNs/C...

  • 视觉

    卷积神经网络整理 各种卷积神经网络变形

  • datawhale-task05(卷积神经网络基础;leNet;

    卷积神经网络基础 LeNet和其他进阶卷积神经网络

  • 卷积神经网络

    第七章 卷积神经网络 卷积层(Convolution Layer) 卷积神经网络(Convolutional Ne...

  • 再战机器学习—卷积神经网络

    卷积神经网络 卷积神经网络可能是离我们最近的神经网络,遍布在计算机视觉应用。通常卷积神经网络是由卷积层、池化层和全...

  • 卷积神经网络

    卷积神经网络   卷积神经网络(Convolutional Neural Network,CNN或ConvNet)...

  • 二维卷积运算

    卷积神经网络是含有卷积层(convolutional layer)的神经网络。本章中卷积神经网络均使用最常见的二维...

  • CNN

    参考:CNN卷积神经网络原理讲解+图片识别应用(附源码)卷积神经网络 – CNN深入学习卷积神经网络(CNN)的原...

  • CNN基本算子与操作

    卷积神经网络(Convolutional Neural Networks,CNN)是一种前馈神经网络。卷积神经网络...

  • 卷积层(Convolution Layer)

    卷积神经网络(Convolutional Neural Networks,CNN)是一种前馈神经网络。卷积神经网络...

网友评论

      本文标题:第一个卷积神经网络

      本文链接:https://www.haomeiwen.com/subject/pluupqtx.html