![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
TensorFlow
文章平均质量分 57
Hong_Youth
热爱生活、认真工作、成长进步!
人工智能、计算机视觉、编程语言等方向技术分享。
展开
-
一文看懂网络中间层特征矩阵和卷积层参数
在使用卷机神经网络训练模型时,很多时候需要查看卷积层的特征矩阵是什么样子的,看它提取的是什么特征,有多少卷积层参数以及将它可视化出来,本期本文就给大家讲解一下怎么使用Pytorch和TensorFlow查看中间层的特征矩阵和卷积层参数。1、Pytorch查看特征图和卷积参数我们以AlexNet这个简单的卷积神经网络为例来查看它的中间层特征矩阵和卷积层参数。首先建立我们的model.py,在正向传播函数中保存需要显示的卷积层输出的特征矩阵在一个列表中。import torch.nn as n原创 2021-05-02 13:12:12 · 1351 阅读 · 7 评论 -
目标检测与分类API(TensorFlow官方)
在做自己的项目时和做毕业设计的时候会用到一些网络的预训练模型和数据集。那么去哪里获取这些数据集和预训练模型呢。今天这里提供了一系列TensorFlow官方提供的API接口。1、图像分类模型首先我们需要访问GitHub的TensorFlow的TensorFlow-Slim image classification model library,访问网址是:https://github.com/tensorflow/models/tree/master/research/slim进入页面...原创 2021-03-14 17:05:43 · 489 阅读 · 0 评论 -
语义分割——Unet模型
语义分割的UNET网络结构Unet是2015年诞生的模型,它几乎是当前segmentation项目中应用最广的模型。Unet能从更少的训练图像中进行学习,当它在少于40张图的生物医学数据集上训练时,IOU值仍能达到92%。Unet网络非常简单,前半部分作用是特征提取,后半部分是上采样。在一些文献中也把这样的结构叫做编码器-解码器结构。由于此网络整体结构类似于大写的英文字母U,故得名U-net。这里的融合使用的是tf.concat(),FCN中使用的是tf.add()。Unet实例,城原创 2021-01-11 20:45:22 · 12198 阅读 · 0 评论 -
语义分割网络——FCN
FCN介绍输入和输出网络的输入可以为任意尺寸的彩色图像;输出与输入尺寸相同,通道数为:n(目标类别数)+ 1(背景)。全卷积网络在CNN卷积部分不用全链接而是替换成卷积的目的是允许输入的图片超过某一尺寸的任意大小。上采样(Up sampling)由于在卷积过程中,我们的特征图像变得很小(比如长宽变为原图像的1/32),为了得到原图像大小的稠密像素预测,我们需要进行上采样。上采样的三种方式:分别对应最大池化、平均池化和卷积操作的反过来使用。1、插值法: 在两个值之间插入一个原创 2021-01-11 20:43:01 · 705 阅读 · 0 评论 -
图像语义分割
语义分割简介图像语义分割是计算机视觉中十分重要的领域。它是指像素级地识别图像,即标注出图像中每个像素所属的对象类别。上图为语义分割的一个实例,其目标是预测出图像中每一个像素的类标签。图像语义分割是图像处理和计算机视觉技术中关于图像理解的重要的一环。语义分割对图像中的每一个像素点进行分类,确定每个点的类别(如属于背景、边缘或身体等)需要和实例分割区分开来。语义分割没有分离同一类的实例;它关心的只是每个像素的类别,如果输入对象中有两个相同类别的对象,则分割本身不会将它们区分为单独的对象。原创 2021-01-09 19:07:43 · 1025 阅读 · 0 评论 -
TensorFlow2.0中图运算模式和GPU调用规则
图运算模式(Graph Execution模式)在TensorFlow2.0中,我们可以使用@tf.function装饰器实现Graph Execution,从而将模型转换为易于部署且高性能的TensorFlow图模型。@tf.function装饰器 使用静态编译将函数内的代码转换为计算图。@tf.function对函数内可使用的语句有一定的限制(仅支持python语言的一个子集),且需要函数内的操作本身能够被构建为计算图。建议在函数内只使用TensorFlow的原生操作,不要使用过于复杂的Pyth原创 2021-01-09 19:04:31 · 708 阅读 · 3 评论 -
深度学习中常见的图像处理任务
常见图像处理的任务1、分类给定一副图像,我们用计算机模型预测图片中有什么对象。2、分类与定位我们不仅要知道图片中的对象是什么,还要在对象的附近画一个边框,确定该对象所处的位置。3、语义分割区分到图中每一点像素点,而不仅仅是矩形框框住。4、目标检测目标检测简单来说就是回答图片里面有什么?分别在哪里?(并把它们使用矩形框框住)5、实例分割实例分割是目标检测和语义分割的结合。相对目标检测的边界框,实例分割可精确到物体的边缘;相对语义分割, 实例分割需要标出图原创 2021-01-09 18:58:24 · 1202 阅读 · 0 评论 -
TensorFlow2.0保存模型
介绍模型保存有5种:1、整体保存;2、网络架构保存;3、权重保存;4、回调保存;5、自定义训练模型的保存1、整体保存:权重值,模型配置(架构),优化器配置整个模型可以保存到一个文件中,其中包含权重值、模型配置乃至优化器配置。这样,您就可以为模型设置检查点,并稍后从完全相同的状态继续训练,而无需访问原始代码。在Keras中保存完全可以正常使用的额模型非常有用,您可以在TensorFlow.js中加载它们,然后在网络浏览器中训练和运行它们。Keras使用HDF5标准提供基本的保存格式。原创 2021-01-09 18:53:56 · 979 阅读 · 0 评论 -
预训练网络(迁移学习)
预训练网络预训练网络是一个保存好的之前已在大型数据集(大规模图像分类任务)上训练好的卷积神经网络。如果这个原始数据集足够大且足够通用,那么预训练网络学到的特征空间层次结构可以作为有效的提取视觉世界特征的模型。即使新问题和新任务与原始任务完全不同,学习到的特征在不同问题之间是可移植的,这也是深度学习相比浅层学习方法的一个重要优势。它使得深度学习对于小数据问题非常有效。Keras内置预训练网络Keras库中包含(在TensorFlow中也就是tf.keras模块)VGG16 、VGG19、Re原创 2021-01-01 13:58:37 · 3101 阅读 · 0 评论 -
TensorFlow2.0批标准化
什么是标准化传统机器学习中标准化也叫做归一化,一般是将数据映射到指定的范围,用于除去不同维度数据的量纲以及量纲单位 。数据标准化让机器学习模型看到的不同样本彼此之间更加相似,这有助于模型的学习与对新数据的泛化。常见的数据标准化形式:标准化和归一化标准化:将数据减去均值除以方差,使得它的均值为0,标准差为1(打个问号)批标准化Batch Normalization,批标准化,和普通的数据标准化类似,是将分散的数据统一的一种做法,也是优化神经网络的一种方法。不仅在将数据输入模型之原创 2021-01-01 13:55:45 · 679 阅读 · 0 评论 -
Tensorboard可视化
Tensorboard简介Tensorboard是一款为了更方便TensorFlow程序的理解、调试与优化发布的可视化工具。你可以用Tensorboard来展现你的Tensorflow图像,绘制图像生成的定量指标图以及附加数据。Tensorboard通过读取TensorFlow的事件文件来运行。TensorFlow的事件文件又包括了你会在TensorFlow运行中涉及到的主要数据。Tensorboard随着TensorFlow的安装一并被安装好了,不用单独去安装。1、通过tf.keras回调函数使用原创 2021-01-01 13:51:22 · 2612 阅读 · 1 评论 -
TensorFlow2.0的Eager模式
Eager模式简介tf.keras是TensorFlow2.0带给我们的高阶核心API。当使用自定义训练时,tf.keras就显得集成度太高了,不适合。所以就要用到Eager模式和自定义训练。TensorFlow的eager模式是一个命令式编程环境,它使得我们可以立即评估操作产生的结果,而无需构建计算图。也可以叫做交互模式。在TensorFlow1.0中的1.8以后版本需要手动启动Eager模式,但是在TensorFlow2.0版本中是直接默认使用eager模式的。 可以使用tf.executi原创 2021-01-01 13:43:20 · 2122 阅读 · 2 评论 -
图像语义分割介绍
语义分割简介图像语义分割是计算机视觉中十分重要的领域。它是指像素级地识别图像,即标注出图像中每个像素所属的对象类别。上图为语义分割的一个实例,其目标是预测出图像中每一个像素的类标签。图像语义分割是图像处理和计算机视觉技术中关于图像理解的重要的一环。语义分割对图像中的每一个像素点进行分类,确定每个点的类别(如属于背景、边缘或身体等)需要和实例分割区分开来。语义分割没有分离同一类的实例;它关心的只是每个像素的类别,如果输入对象中有两个相同类别的对象,则分割本身不会将它们区分为单独的对象。原创 2020-12-29 16:04:08 · 5162 阅读 · 0 评论 -
卷积神经网络CNN简介
CNN基础基于卷积神经网络的深度学习技术可以实现对图像的高准确率识别。卷积神经网络主要应用于计算机视觉相关任务,但它能处理的任务并不局限于图像,其实语音识别也是可以使用卷积神经网络。将使用MNIST手写数字、cifar10图像数据以及猫狗图像识别数据来进行举例说明。当计算机看到一张图像(输入一张图像)时,它看到的是一大堆像素值。当我们人类对图像进行分类时,这些数字毫无用处,可它们却是计算机可获得的唯一输入。现在的问题是:当你提供给计算机这一组数据后,它将输出描述该图像属于某一特定分类的概率的数字(比原创 2020-12-08 20:26:59 · 873 阅读 · 0 评论 -
使用tf.data数据转换来训练MNIST数据集
以MNIST数据集为例来训练模型# -*- coding: UTF-8 -*-"""Author: LGDFileName: fashion_mnist_tfdatasetDateTime: 2020/11/26 09:04 SoftWare: PyCharm"""import tensorflow as tfprint('Tensorflow version: {}'.format(tf.__version__))(train_images, train_labels), (tes原创 2020-12-08 20:21:42 · 282 阅读 · 0 评论 -
tf.data
tf.data模块基于tf.data API, 我们可以使用简单的代码来构建复杂的输入,可以轻松处理大量数据、不同的数据格式以及复杂的转换。tf.data API 最重要的概念:tf.data.Dataset 表示一系列元素。其中每个元素包含一个或多个Tensor对象。例如,在图片管道中,一个元素可能是单个训练样本,具有一对表示图片数据和标签的张量。有两种方式来创建tf.data.Dataset1、直接从Tensor创建Dataset例如Dataset.from_tensor_slices();当原创 2020-12-08 20:14:04 · 329 阅读 · 0 评论 -
网络优化、超参数选择、过拟合处理
网络容量可以认为与网络中的可训练参数成正比网络中的神经单元数越多,层数越多,神经网络的拟合能力越强。但是训练速度、难度会变大,越容易产生过拟合。**超参数:**在搭建神经网络中,需要我们自己选择(不是通过梯度下降算法去优化)的那些参数。比如中间层的神经元个数、学习速率。如何提高网络的拟合能力一种明显的做法就是增大网络容量:1、增加层 :大大提高网络的拟合能力。这也是深度学习的层数越来越深的原因。2、增加隐藏神经元个数:对于网络的提高并不明显。注意:单层的神经元个数也不能太少,太少的话,会造成原创 2020-12-08 20:06:31 · 809 阅读 · 0 评论 -
Dropout与过拟合抑制、函数式API
如何添加Dropout层在网络中添加Dropout层,主要是在隐藏层中使用,依然是使用之前的例子,如下:# 建立模型model = tf.keras.Sequential()# 添加层model.add(tf.keras.layers.Flatten(input_shape=(28, 28))) # Flatten将二维数据扁平为28*28向量model.add(tf.keras.layers.Dense(128, activation='relu')) # 接着使用Dense处理一维数据,原创 2020-11-12 11:04:10 · 439 阅读 · 4 评论 -
优化函数、学习速率、反向传播
多层感知器梯度下降算法编译模型时优化方法使用的是梯度下降算法。梯度下降算法是一种致力于找到函数极值点的算法。前面介绍过,所谓“学习”便是改进模型参数,以便通过大量训练步骤将损失最小化。有了这个概念,将梯度下降法应用于寻找损失函数的极值点便构成了依据输入数据的模型学习。学习速率梯度就是表明损失函数相对参数的变化率,对梯度进行缩放的参数被称为学习速率(learning rate)。是一种超参数(人为规定参数)或对模型的一种手工可配置的设置。需要为它指定合适的值。如果学习速率太小,则找到损失函数的极小原创 2020-11-12 10:59:36 · 640 阅读 · 0 评论 -
多分类情况使用softmax函数激活
softmax多分类对数几率回归解决的是二分类问题,对于多分类问题,我们可以使用softmax函数,它是对数几率回归在N个可能的值上的推广。神经网络的原始输出不是一个概率值,实质上是输入函数的值做了复杂的加权和非线性处理后的一个值,那如何将这个输出变为概率分布呢?这就是softmax层的作用。softmax公式:softmax层要求每个样本必须属于某个类别,且所有可能的样本均被覆盖。softmax的样本分量之和为1,当只有两个类别时,与对数几率回归完全相同。在tf.keras里,对于多分类问题我原创 2020-11-10 21:58:12 · 2767 阅读 · 0 评论 -
梯度下降和多层感知器
梯度下降算法致力于找到损失函数极值点,学习即是改进模型参数,以便通过大量训练步骤将损失最小化。梯度的输出由若干偏导数构成的向量,每个分量对应于函数对输入向量的相应分量的偏导:梯度的输出向量表明了在每个位置损失函数增长最快的方向,可以理解为函数在每个位置向哪个方向移动可以增长函数值。随机初始化,初始化一批值,需要计算梯度值,找到损失值变化最快的方向。每一次移动的距离,叫做学习速率。学习速率小,迭代次数多,训练慢;学习速率大,会错过极值点,后面会在极值点附近来回抖动。不用担心局部极值点,是随机初始原创 2020-11-10 21:55:23 · 402 阅读 · 0 评论 -
逻辑回归与交叉熵
逻辑回归主要是给出“是”和“否”的回答,使用Sigmoid激活函数:需要用到激活函数:Sigmoid函数,将输入数据控制在0到1之间并输出。将0到1之间的值可以看着是一种概率值,当概率值小于0.5时,输出了一个负面的回答;当概率值大于0.5时,认为它给出了一个正面的回答。sigmoid是一个概率分布函数,给定某个输入,它将输出为一个概率值。把这种0到1之间的值看作是这个网络给出的概率结果逻辑回归损失函数平方差损失所反映的是损失和原有数据集在同一数量级的情形,对于庞大的数据集而言,需要迭代次数更多原创 2020-11-10 21:50:19 · 1115 阅读 · 0 评论