TensorFlow(keras)入门课程--03 卷积介绍

【入门教程】​TensorFlow 2.0 模型:卷积神经网络 文 /李锡涵,Google Developers Expert 本文节选自《简单粗暴 TensorFlow 2.0》 在《【入门教程】TensorFlow 2.0 模型:多层感知机》里,我们以多层感知机(Multilayer Perceptron)为例,总体介绍了 TensorFlow 2.0 的模型构建、训练、评估全流程。 本篇文章则以在图像领域常用的卷积神经网络为主题,介绍以下内容: 如何使用 tf.keras 构建卷积神经网络模型; 如何在自己的项目中快速载入并使... 阅读详情

目录

  • 1 简介
  • 2 使用卷积
  • 3 开始编码
  • 4 创建卷积
  • 5 查看结果
  • 6 了解池化
  • 7 编写池化代码

1 简介

在本节中,你将了解卷积以及它们在计算机视觉场景中如此强大的原因。

在上一节中,我们了解了如何使用Fashion MNIST数据集为时尚项目训练图像分类器。但这里有一个明显的约束:图像时28×28的,且图像在图片居中。

例如,这里有Fshion MNIST中的几张图。

上节我们创建的全连接网络DNN知识从构成毛衣的原始像素中学到的,那么考虑一下如何对下面这张图片进行分类呢?

虽然很明显这张图片有靴子,但分类器会因多种原因而失败。首先,它不是28×28的灰度图,更重要的是,分类器是从左开始的原始像素上进行训练的。要解决此问题,可以使用Convolutions

2 使用卷积

卷积是一种过滤器,它通过图像处理它,并提取在图像中显示共性的特征。在本节中,我们将看到它们的工作原理,并处理图像以查看是否可以从中提取特征。

这个过程非常简单,我们只需扫描图像中的每个像素,然后查看其相邻像素。我们可以将这些像素的值乘以滤波器中的等效权重。

下面将通过在2D图像中来探索卷积的工作原理。

主要是通过scipy的ascent图像来证明这一点。这是一个很好的内置图片 ,有很多角度和线条。

3 开始编码

首先引入一些Python库并获取上升图片

import cv2
import numpy as np
from scipy import misc
i = misc.ascent()

接下来,使用pyplot库来绘制图形,以便我们知道图像样子

import matplotlib.pyplot as plt
%matplotlib inline
plt.grid(False)
plt.gray()
plt.axis("off")
plt.imshow(i)
<matplotlib.image.AxesImage at 0x1bcc4ea6198>

在这里插入图片描述

我们可以看到这是一个楼梯间的图像。我们可以试试是否可以隔离它们,例如:强烈的垂直线。

图像存储为numpy数组,我们可以通过复制该数组来创建转换后的图像。

i_transformed = np.copy(i)
size_x = i_transformed.shape[0]
size_y = i_transformed.shape[1]

4 创建卷积

首先,我们将卷积矩阵设为3×3的数组。

filter = [[-1,-2,-1],[0,0,0],[1,2,1]]
weight = 1

现在我们将计算像素,迭代图像。

for x in range(1,size_x-1):
    for y in range(1,size_y-1):
        output_pixel = 0.0
        output_pixel = output_pixel + (i[x - 1, y-1] * filter[0][0])
        output_pixel = output_pixel + (i[x, y-1] * filter[0][1])
        output_pixel = output_pixel + (i[x + 1, y-1] * filter[0][2])
        output_pixel = output_pixel + (i[x-1, y] * filter[1][0])
        output_pixel = output_pixel + (i[x, y] * filter[1][1])
        output_pixel = output_pixel + (i[x+1, y] * filter[1][2])
        output_pixel = output_pixel + (i[x-1, y+1] * filter[2][0])
        output_pixel = output_pixel + (i[x, y+1] * filter[2][1])
        output_pixel = output_pixel + (i[x+1, y+1] * filter[2][2])
        output_pixel = output_pixel * weight
        if output_pixel<0:
            output_pixel = 0
        if output_pixel>255:
            output_pixel = 255
        i_transformed[x,y] = output_pixel

5 查看结果

现在我们可以绘制图像来查看卷积后的图像的结果

plt.gray()
plt.grid(False)
plt.imshow(i_transformed)
<matplotlib.image.AxesImage at 0x1bcc875e198>

在这里插入图片描述

下面,将考虑卷积核对图像的影响。

使用[-1,0,1,-2,0,2,-1,0,1]为我们提供了一组非常强大的垂直线:

使用[-1,-2,-1,0,0,0,1,2,1]提供了一组水平线

6 了解池化

除了使用卷积,池化还可以帮助我实现检测功能。池化的目标是减少图像中的总信息两,并同时保持检测到特征存在。

其实有许多不同类型的池,但对于本实验,我们将使用一个称为MAX的池。

这里的想法是迭代图像,并考虑右侧、下方和右下方的像素及其近邻。取其中最大的加载到新图像中。因此,新图像时旧图像的1/4.

7 编写池化代码

此代码将执行(2,2)池。运行它并查看输出结果,我们将看到图像时原始尺寸的1/4,同时保留所有特征。

new_x = int(size_x/2)
new_y = int(size_y/2)
newImage = np.zeros((new_x,new_y))
for x in range(0,size_x,2):
    for y in range(0,size_y,2):
        pixels = []
        pixels.append(i_transformed[x, y])
        pixels.append(i_transformed[x+1, y])
        pixels.append(i_transformed[x, y+1])
        pixels.append(i_transformed[x+1, y+1])
        pixels.sort(reverse=True)
        newImage[int(x/2),int(y/2)] = pixels[0]

plt.gray()
plt.grid(False)
plt.imshow(newImage)

<matplotlib.image.AxesImage at 0x1bcc8a401d0>

在这里插入图片描述

注意,此时图像现在是256×256,原始尺寸的1/4,并且检测到的功能已得到增强。


keras自动编码器实现系列之卷积自动编码器操作 主要介绍了keras自动编码器实现系列之卷积自动编码器操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 立即下载

相关推荐

Sentinel-1 Burst数据处理避坑实录:从aria2c报错到wget脚本救场

本文详细介绍了Sentinel-1 Burst数据处理的完整解决方案,从下载困境到高效处理技巧。针对aria2c报错等常见问题,提供了增强版wget脚本和智能分组方法,显著提升下载成功率和处理效率,特别适合科研机构和企业级网络环境下的哨兵数据处理需求。

weixin_42641998的博客 284

【TensorFlow】搭建一个简单的卷积网络进行图片分类,并用自己的数据集训练

目录环境数据集构建搭建卷积网络并训练评估预测和可视化 环境 tensorflow2.x 需要的包有 import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPooling2D from tensorflow.keras.preprocessing.image import Imag

云逸的博客 1814

深入C6678启动流程:从BootRom参数表到多核镜像部署的完整解析

本文深入解析TMS320C6678 DSP的启动流程,从BootRom参数表到多核镜像部署的全过程。详细介绍了七种启动模式的工程选择、多核镜像构建技巧以及二级引导策略,帮助开发者掌握C6678的启动机制与调试方法,提升嵌入式系统开发效率。

weixin_30505225的博客 612

使用Keras和TensorFlow 2.0建立深度学习模型对图像进行分类

在本文中,我们将构建一个深度学习模型来对图像中的对象进行分类。为了构建卷积神经网络,我们将使用Kaggle提供的这个数据集。(https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition/data)CNN是一种主要用于视觉任务的神经网络。该网络将检测动物的特征,然后使用这些特征将给定的输入图像分类为猫或狗。 导入必要的包文件 先激活虚拟环境 conda activate my_env 运行以下命令安装keras和tensorflow:

albertleebob的博客 1232

什么是OAuth 2.0?

OAuth2.0是一种授权协议而非登录协议,核心思想是通过令牌(Token)而非密码实现安全授权。它涉及三个关键角色:用户、第三方应用和身份提供商(IdP)。最常用的授权码流程(AuthorizationCode Flow)通过浏览器三方对话,确保用户密码只提供给IdP而非第三方应用。OAuth2.0提供四种授权方式,其中授权码和客户端凭证是当前主流,而隐式和密码模式已不推荐。需要注意的是,OAuth2.0解决的是授权问题,身份认证需通过OpenID Connect实现。该协议通过临时令牌机制,实现了&qu

sonadorje的专栏 1162

芒果YOLOv8改进52:主干Backbone篇之GhostNetV2:提出原创GhostNetV2 架构升级版:引入长距离注意力机制增强廉价操作,构建更强端侧轻量型骨干,打造高效轻量级检测器

长距离注意力机制增强廉价操作,打造轻量级检测器

包括YOLOv5、YOLOv7、YOLOv8等模型改进 1612

tensorflow和keras使用cpu进行基于卷积神经网络的图像分类

基于卷积神经网络的图像分类TensorFlow环境搭建猫狗数据集下载准备使用原始数据集直接训练导入库和数据集构建模型数据增强后的训练显示神经网络结构遇到的问题 TensorFlow环境搭建 TensorFlow安装参考: https://www.cnblogs.com/HongjianChen/p/8385547.html. 首先建立一个名为TensorFlow的environment 建立TensorFlow环境后,下载TensorFlow和keras 然后打开anaconda 进入TensorF

A981012的博客 1538

神经进化实践:用遗传算法替代反向传播优化神经网络

神经进化用来定义应用于深度学习的特定优化模式。在本节中,我们通过遗传算法优化简单深度学习网络的权重/参数,替换在误差反向传播训练过程中的所用优化器。

盼小辉丶的博客 3627

基于tensorflow keras使用卷积神经网络CNN完成图片分类

本人原来的笔记本配置不行,跑不起来,换了台式电脑运行正常,具体台式配置会另外写一篇安装tensorflow2.4.0教程 直接上代码,一共重复训练7次 from tensorflow.python.keras.datasets import cifar100 from tensorflow import keras import tensorflow class CifarCNN(object): #编写模型 两层卷积层+两层池化层+全连接神经网络层 model = keras.mo

java_raylu的博客 2369

42、InfiniBand技术详解:QP状态机、操作及错误处理

本文深入解析InfiniBand技术中的核心组件QP(Queue Pair)状态机、工作请求处理机制、支持的操作类型及错误处理策略。详细介绍了QP的创建与状态转换流程,包括INIT、RTR、RTS等关键状态,并提供了状态修改的代码示例。文章还探讨了工作请求的发布、资源使用限制、围栏机制以及重试和RNR流程,帮助开发者理解通信可靠性保障机制。此外,涵盖了多播组的应用场景与API使用方法,并对比了用户空间与内核级RDMA API的调用差异,最后给出了实践建议和常见问题解答,为构建高性能分布式系统提供技术指导。

oauth7security的博客 132

三维重建(十八)——colmap的使用(粗浅)

三维重建(十八)——colmap的使用(粗浅)

河海大学研究生在读的学习笔记 1376

TensorFlow2.0(九)--Keras实现基础卷积神经网络

Keras实现基础卷积神经网络1. 卷积神经网络基础2. Keras实现卷积神经网络2.1 导入相应的库2.2 数据集的加载与处理2.3 构建模型2.4 模型的编译与训练2.5 学习曲线绘制2.6 模型验证 1. 卷积神经网络基础 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。卷积神经网...

魔法师の屋子★↓☆ 4834

芒果YOLO11改进44:主干Backbone篇之MobileViT::结合最新 ICLR2022 顶会|轻量通用的MobileViT结构(一)Transformer,轻量级、通用且移动友好的视觉转换

MobileViT::结合最新 ICLR2022 顶会|轻量通用的MobileViT结构(一)Transformer,轻量级、通用且移动友好的视觉转换

包括YOLOv5、YOLOv7、YOLOv8等模型改进 371

【TensorFlow】Keras介绍与入门

Keras 是一个高级神经网络API,它以简单性和快速实验设计为目标。Keras 既可以作为独立工具使用,也可以作为 TensorFlow、Microsoft Cognitive Toolkit (CNTK) 和 Theano 等后端的接口。自2017年起,Keras 成为了 TensorFlow 的官方高级 API,并且是推荐给初学者和专家的主要界面。

专注上位机开发、机器视觉、机器学习、嵌入式软硬件开发 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【TensorFlow-windows】keras接口——卷积核可视化

前言 在机器之心上看到了关于卷积核可视化相关理论,但是作者的源代码是基于fastai写的,而fastai的底层是pytorch,本来准备自己用Keras复现一遍的,但是尴尬地发现Keras还没玩熟练,随后发现了一个keras-vis包可以用于做卷积核可视化。以下理论是在不熟悉fastai的运行机制的基础上做的简单理解,可能有误,欢迎指正。 国际惯例,参考博客: 40行Python代码,实现卷积特征...

风翼冰舟的博客 4873

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Tensorflow+Keras入门——利用mnist手写数字识别快速入门Keras

本文简介 基于Keras+Tensorflow,利用Lenet-5模型的mnist手写数字识别的完整程序和代码分析。适合想要入门Keras的新手。 博主由于很久没碰Tensorflow,很多代码都报了类似WARNING:tensorflow:From /someplace/xx.py:xxx: xxx is deprecated and will be removed in a future ve...

umbrellalalalala的博客 4399

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

TensorFlow与Keras 介绍与入门

TensorFlow与Keras 介绍与入门实现卷积神经网络(框架)TensorFlow是什么?计算图 实现卷积神经网络(框架) TensorFlow更加受欢迎,连个版本1.x与2.x版本 Keras更加好用,方便 TensorFlow是什么? 1.采用计算图的形式表达数值计算的编程系统,能在大规模状态下进行运行,也可以在异构环境下进行 2. 使用数据流图表来表征计算,共享状态以及改变状态的操作, 3.应用范围:语音识别,计算机视觉,广告等(在大型数据中心服务器中有很大优势) 1.图像:图像分类,物体检测

沉晨尘宸的博客 1057

tensorflow、keras中卷积参数same和valid详解

在caffe中,我们对卷积后的输出图像尺寸计算如下: 1、卷积后尺寸计算 (理论上) out_height=ceil( (in_height+2pad-filter_height)/strides[1]+1 ) out_width=ceil( (in_width+2pad-filter_width)/strides[2] +1 ) 注明:math.ceil()表示向上取整,如:5.30-&gt...

zhw864680355的博客 3212

Keras 速成 构建卷积神经网络

Keras 速成 构建卷积神经网络 文章目录Keras 速成 构建卷积神经网络一、介绍二、30秒入门KerasSequential 模型.add() 来堆叠模型.compile() 来配置学习过程训练数据三、安装并且配置环境四、Keras的模型Model 类模型Sequential 顺序模型五、Keras的网络层Keras 核心网络层激活DropoutFlatten卷积层Conv1DConv2DSeparableConv1DSeparableConv2DConv3D池化层MaxPooling1DMaxPoo

江月的博客 1万+

Keras-FCN 环境搭建完整教程:Ubuntu 下配置 CUDA、TensorFlow 与 Keras

Keras-FCN 环境搭建是很多想入门语义分割的开发者遇到的第一道坎。Keras-FCN 是一个基于 Keras 与 TensorFlow 实现的全卷积网络(Fully Convolutional Networks,FCN)语义分割项目,内置 FCN_Vgg16_32s、FCN_Resnet50_32s、AtrousFCN_Resnet50_16s 三种模型,其中 AtrousFCN_Resne

gitblog_01137的博客 814

基于Tensorflow和Keras实现卷积神经网络CNN

文章目录一、环境的配置二、神经网络CNN的介绍三、数据集的准备四、猫狗分类的实例五、参考资料 一、环境的配置 安装Anaconda 详细步骤请参考下面链接: 配置TensorFlow、Keras ①创建一个新的 二、神经网络CNN的介绍 三、数据集的准备 四、猫狗分类的实例 五、参考资料 ...

Harriet的博客 6538

深度学习三大框架对比与实战:PyTorch、TensorFlow 和 Keras 全面解析

PyTorch 是 Facebook 推出的动态计算图框架,以灵活的调试能力和面向对象的设计深受研究人员喜爱。其代码风格与 Python 十分相似,非常直观。主要特点:动态计算图:支持即时调整网络结构,调试更加灵活。社区支持:在学术领域占据主流地位。简单易用:轻松与其他 Python 库集成,如 Numpy。PyTorch以灵活性和动态特性,适合研究人员。TensorFlow提供全面的工具链和部署能力,是工业级开发的首选。Keras以其简单性和模块化设计,非常适合新手入门和快速原型。

2301_80038570的博客 3564

TensorFlow+Keras 03 TensorFlow 与 Keras 介绍

1 TensorFlow 架构图 1.1 处理器 TensorFlow 可以在CPU、GPU、TPU中执行 1.2 平台 TensorFlow 具备跨平台能力,Windows 、Linux、Android、IOS、Raspberry Pi、云端执行 1.3 分布式执行引擎 TensorFlow Distributed Execution Engine 分布式执行引擎 在深度学习中,最...

weixin_30593443的博客 216

Keras与Tensorflow2.0入门(7)层与自定义层

文章目录0.前言1. 层1.1 全连接层(Dense)2.自定义层 0.前言 之前我们简要介绍了Keras与Tensorflow的一些基本用法,主要是了解整个深度学习框架的执行,这样我们就可以复现出别人的模型,拿到别人的模型就可以跑了,甚至做一些简单的改动。但是,如果想有一些创新,不会自定义层可谓是巧妇难为无米之炊,没有趁手的武器,再高的武功也不行。 1. 层 我们都知道,深度学习曾经是计算图模型...

刘炫320的博客 5756

tensorflow keras 使用卷积conv2d 池化pooling之后输出的shape

keras和TensorFlow设置卷积层的过程中可以设置padding参数,vaild和same。“valid”代表只进行有效的卷积,对边界数据不处理。“same”代表保留边界处的卷积结果,通常会导致输出shape与输入shape相同. 下面 W为输入大小,S为步长,F为核大小 一、tensorflow 中 1.卷积 在tensorflow中,conv后的shape可按照下边的公式计算 padd...

weixin_43379058的博客 2052

keras和tensorflow的关系

2017 年中,Keras 已经被大规模采用,并与 TensorFlow 集成在一起。这种 TensorFlow + Keras 的组合让你可以: 1、使用 Keras 的接口定义模型; 2、如果你需要特定的 TensorFlow 功能或者需要实现 Keras 不支持但 TensorFlow 支持的自定义功能,可以回到 TensorFlow。 简单地说,你可以将 TensorFlow 代码直接插入...

qq_31908897的博客 2999
上一篇: TensorFlow(keras)入门课程--02 计算机视觉的介绍
下一篇: TensorFlow(keras)入门课程--04 卷积神经网络
mind_programmonkey
mind_programmonkey 领域专家: 算法与数据结构技术领域 领域专家: 算法与数据结构技术领域
博客等级 码龄9年 4435粉丝 1111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值