【入门教程】​TensorFlow 2.0 模型:卷积神经网络

本文介绍了如何使用 TensorFlow 2.0 的 tf.keras 构建卷积神经网络(CNN)模型,包括卷积层和池化层的基本原理。此外,还展示了如何快速加载和使用预定义的经典 CNN 模型,如 VGG16。通过实例,阐述了 CNN 在图像分类任务上的优势,并提供了使用 TensorFlow Datasets 和 tf.data 进行数据处理的简要介绍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文 /  李锡涵,Google Developers Expert

本文节选自《简单粗暴 TensorFlow 2.0》

图片

 

《【入门教程】TensorFlow 2.0 模型:多层感知机》 里,我们以多层感知机(Multilayer Perceptron)为例,总体介绍了 TensorFlow 2.0 的模型构建、训练、评估全流程。

本篇文章则以在图像领域常用的卷积神经网络为主题,介绍以下内容:

  • 如何使用 tf.keras 构建卷积神经网络模型;

  • 如何在自己的项目中快速载入并使用经典的卷积神经网络模型;

  • 为深度学习的入门者简介 卷积层 和 池化层 的原理。

 

 

使用 tf.keras 构建卷积神经网络模型

卷积神经网络 (Convolutional Neural Network, CNN) 是一种结构类似于人类或动物的视觉系统的人工神经网络,包含一个或多个卷积层 (Convolutional Layer)、池化层 (Pooling Layer) 和全连接层 (Fully-connected Layer)。

基础知识和原理

卷积神经网络的一个示例实现如下所示,和上节中的 多层感知机 在代码结构上很类似,只是新加入了一些卷积层和池化层。这里的网络结构并不是唯一的,可以增加、删除或调整 CNN 的网络结构和参数,以达到更好的性能。

 1class CNN(tf.keras.Model):
 2    def __init__(self):
 3        super().__init__()
 4        self.conv1 = tf.keras.layers.Conv2D(
 5            filters=32,             # 卷积层神经元(卷积核)数目
 6            kernel_size=[5, 5],     # 感受野大小
 7            padding='same',         # padding策略(vaild 或 same)
 8            activation=tf.nn.relu   # 激活函数
 9        )
10        self.pool1 = tf.keras.layers.MaxPool2D(pool_size=[2, 2], strides=2)
11        self.conv2 = tf.keras.layers.Conv2D(
12            filters=64,
13            kernel_size=[5, 5],
14            padding='same',
15            activation=tf.nn.relu
16        )
17        self.pool2 = tf.keras.layers.MaxPool2D(pool_size=[2, 2], strides=2)
18        self.flatten = tf.keras.layers.Reshape(target_shape=(7 * 7 * 64,))
19        self.dense1 = tf.keras.layers.Dense(units=1024, activation=tf.nn.relu)
20        self.dense2 = tf.keras.layers.Dense(units=10)
21
22    def call(self, inputs):
23        x = self.conv1(inputs)                  # [batch_size, 28, 28, 32]
24        x = self.pool1(x)                       # [batch_size, 14, 14, 32]
25        x = self.conv2(x)                       # [batch_size, 14, 14, 64]
26        x = self.pool2(x)                       # [batch_size, 7, 7, 64]
27        x = self.flatten(x)                     # [batch_size, 7 * 7 * 64]
28        x = self.dense1(x)                      # [batch_size, 1024]
29        x = self.dense2(x)                      # [batch_size, 10]
30        output = tf.nn.softmax(x)
31        return output

图片

示例代码中的 CNN 结构图示

 

<

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值