tensorflow如何取平均_【他山之石】利用Tensorflow构建CNN图像多分类模型及图像参数、数据维度变化情况实例分析...

本文详细介绍了如何利用Tensorflow构建CNN图像多分类模型,涵盖了输入、卷积、激活函数、池化、扁平化、全连接及输出层的设置。通过实例分析了图像参数和数据维度变化。此外,还探讨了训练过程和相关参数设置。
摘要由CSDN通过智能技术生成

“他山之石,可以攻玉”,站在巨人的肩膀才能看得更高,走得更远。在科研的道路上,更需借助东风才能更快前行。为此,我们特别搜集整理了一些实用的代码链接,数据集,软件,编程技巧等,开辟“他山之石”专栏,助你乘风破浪,一路奋勇向前,敬请关注。

作者:CSDN—Ferris_YU_Q

地址:https://blog.csdn.net/hurry0808

本文以CIFAR-10(https://www.cs.toronto.edu/~kriz/cifar.html)为数据集,基于Tensorflow介绍了CNN(卷积神经网络)图像分类模型的构建过程,着重分析了在建模过程中卷积层、池化层、扁平化层、全连接层、输出层的运算机理,以及经过运算后图像尺寸、数据维度等参数的变化情况。

01

CIFAR-10数据集介绍 CIFAR-10数据集由60000张彩色图片构成,其中包括50000张训练集图片、10000张测试集图片,每张图片的shape为(32,32,3),即图片尺寸为32*32,通道数为3;所有图片可以被分为10类,包括:
  • 飞机
  • 汽车
  • 鸟类
  • 鹿
  • 青蛙
  • 船只
  • 卡车
官网截图如下所示:
6672e6f98c9b31a684833123e552f785.png

02

利用Tensorflow构建CNN图像多分类模型 TensorFlow™(https://www.tensorflow.org/?hl=zh-cn) 是一个使用数据流图进行数值计算的开放源代码软件库,其API可在Python、C++、Java、Go、Swift (Early Release)语言中调用,其中Python API是目前最完整且易用的。TensorFlow擅长训练深度神经网络,被认定为是神经网络中最好用的库之一。通过使用TensorFlow我们可以快速入门神经网络, 大大降低了深度学习(也就是深度神经网络)的开发成本和开发难度。
Tensorflow使用数据流图进行数值计算,图中的节点代表数学运算,图中的边代表在这些节点之间传递的多维数组(张量)。在使用其构建模型时,先搭建好流图结构——类似于铺好管道,然后再加载数据——向管道中注水,让数据在各节点计算、沿各管道流动;数据在流图中计算、传递时采用多维数组(张量)的形式,因此在Tensorflow中参与计算的均为数组数据类型。
本文使用Tensorflow构建简单的CNN图像多分类模型,其由3个卷积(含激活函数)与池化层、1个扁平层、3个全连接层、1个输出层构成,示意图如下所示:
a40228c6ebcc2edc4afc657f8468b5a6.png

输入(Input)层

图像数据经过标准化(normalize)、ont-hot编码等预处理后形成的4D张量,本文输入层张量shape为[batch, height, width, channels]。

卷积(Convolution)层

卷积层与池化层的 作用 在于:
1. invariance(不变性),这种不变性包括translation(平移),rotation(旋转),scale(尺度);
2. 保留主要的特征同时减少参数(降维,效果类似PCA)和计算量,防止过拟合,提高模型泛化能力。 卷积层计算的过程如 下图 所示:
0cea551a68e249ec74beba9e07c6afde.png
最左侧为输入层图像(加padding后的shape:(7,7,3)),中部为2个卷积核W0、W1及与之相对应的Bias b0、b1,最右侧为输入图像与核w0、w1进行卷积计算后的结果——前者对应于上部图、后者对应于下部图,卷积计算得到的结果即为feature map。每个卷积核与上层图像进行卷积运算后均会得到1个feature map。对于3通道图像,参考本图,卷积运算的过程如下:
1. 输入图像的每个通道分别从左上角开始,每次取与卷积核大小相同的部分(称之为patch),与卷积核对应部分分别相乘后再相加(内积运算);如R通道与W0的最上部核(0核)对应元素相乘再相加得到0,G通道与w0的1核做内积运算得到2,B通道与w0的2核做内积运算后得到0;
2. 内积运算得到的结果相加,再加上w0的bias值(b0),得到feature map左上的元素值;即0+2+0+1=3;
3. 按照指定步长移动卷积核,直至输入图像被整个覆盖,得到最终的feature map;本图中步长(stride)为(2,2)。 这里是 动图 :

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值