当前位置:   article > 正文

【入门教程】​TensorFlow 2.0 模型:卷积神经网络_tensorflow2.0训练卷积神经网络

tensorflow2.0训练卷积神经网络

文 /  李锡涵,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 的网络结构和参数,以达到更好的性能。

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

图片

示例代码中的 CNN 结构图示

 

<
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/957445
推荐阅读
相关标签
  

闽ICP备14008679号