![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Tensorflow 学习笔记
文章平均质量分 92
经典网络的复现和小trick笔记
老光头_ME2CS
机械转计算机视觉的光头老僧
展开
-
KLD Loss( tf.nn.softmax, torch.nn.functional.softmax, log_softmax, kl_div) 计算技巧(一)
最近在比较不同模型的性能,发现虽然文献中使用的相同的指标,比如KLD。但是数据的处理方式却存在着差异,这会导致最后的数据并不具有直接可比性。这里记录下,其中的一些值得记住的细节。主要涉及的API包括tf.nn.softmax, torch.nn.functional.softmax, log_softmax, kl_div文章目录二维数据输入数据前处理tf.nn.softmaxtorch.nn.functional.softmaxkld 散度计算tensorflowpytorch完整代码二维数据输入原创 2020-11-09 15:14:03 · 4409 阅读 · 0 评论 -
Tensorflow一机多版本 Anaconda python虚拟环境 VS code环境切换
已经安装完成tensorflow2.x版本后,当需要运行tensorflow1.x版本的程序时试用一下代码后(参考博文),仍出现无法识别的API时,就真需要tensorflow1.x的运行环境了,为避免不必要的的卸载和装载程序包的过程,我们可使用虚拟环境实现多版本。import tensorflow.compat.v1 as tftf.disable_v2_behavior()基于Anaconda的python虚拟环境该方案可以保证已有的环境不受影响,只要存储空间充足可以建立不同的虚拟环境配置不原创 2020-06-26 22:58:49 · 485 阅读 · 0 评论 -
Tensorflow2.*环境 YOLOV4代码
亲测window10系统Tensorflow2.0.0、 2.1.0、 2.1.0环境 YOLOV4代码,十分好用。从GitHub链接,clone到本地后安装两个程序包pip install tensorflow_addons==0.9.1pip install easyedict下载权重文件下载yolov4.weights文件,并放到./data/yolov4.weights目录下链接:https://pan.baidu.com/s/1B_4GU5TtLsOhOlNKFHVx0g提取码原创 2020-06-25 12:19:16 · 3351 阅读 · 3 评论 -
python tensorflow 多进程或多线程批量读取图像 数据读取加速 multiprocessing.pool concurrent.futures
需求格式为(batch, frames, h, w, c)的视频输入需要使用生成器,自定义网络的输入,但是重复大量重复batch*frames次数据的读取操作,如果默认读取方式,读取速度100frames/s,严重影响训练进程。电脑CPU核心数充沛,需要使用多进程方案,每一个batch分配一个进程,并行读取数据。multiprocessing.pool百度搜网上基本是这段程序import concurrent.futures start_time1 = time.time() def原创 2020-06-22 13:15:34 · 1615 阅读 · 0 评论 -
Tensorflow2.* Keras 视频5维输入 shape调整 tf.reshape()
视频输入问题传统的图像网络的输入数据格式input_shape =(batch, h, w, c),但对于视频输入(batch, number_frames, h, w, c)。我们在keras建模的时候batch_size默认为input_shape[0],无法改变,同时keras.layers.Conv2d等层操作也是按照4维张量处理输入输入。解决方案一:维度切片堆叠(不推荐)在模型搭建的过程中,在number_frames维度进行堆叠,即在喂给keras.layers.Conv2d前将数据按nu原创 2020-06-20 22:16:44 · 1474 阅读 · 0 评论 -
Tensorflow2.1.0或2.2.0 Pytorch1.x GPU版本安装 Windows10环境配置 ImportError: DLL load failed解决方案
查看显卡驱动版本桌面右键=>NVDIA控制面板=>帮助=>系统信息=>显示页面中的驱动程序版本如果没有也没关系,只要保证你的电脑是NVDIA显卡,后续CUDA安装包中包含了显卡驱动记住该版本,一方面驱动版本要满足以下要求CUDA版本和显卡驱动版本对应关系下载CUDA安装包我们要安装TensorFlow 2.1.0 及更高版本,参考。就需要安装 CUDA 10.1,在官网下载对应的版本。点选电脑对应的操作系统版本,进行下载安装CUDA下载完后进行安装,安装原创 2020-06-17 21:30:29 · 952 阅读 · 0 评论 -
tf.reduce_* 应用理解
比如第一张高5, 宽4,3色的图img1 = tf.random.normal([5,4,3])在3色通道(axis=2)求平均后tf.reduce_mean(w1, axis=2)<tf.Tensor: shape=(5, 4), dtype=float32, numpy=array([[-0.9854448 , -1.0194012 , 1.4945674 , -3.3110707 ],[ 1.5118184 , 1.2675568 , -0.02910066, -2.933原创 2020-06-13 10:15:29 · 427 阅读 · 0 评论 -
Tensorflow2.* keras CBAM 代码实现
文章目录理论推导整体模型框架Channel attention moduleSpatial attention module对比SENet代码复现理论推导整体模型框架试验结果显示串联效果优于并联结果,channel attention在前由于spatial attention在前。因此,最后采取的是一个channel attention module与一个spatial attention module串联的形式。表达式如下:F′=Mc(F)⨂F{F}'=M_{c}(F)\bigotimes原创 2020-06-13 08:23:01 · 7075 阅读 · 4 评论 -
Tensorflow2.* keras Squeeze-and-Excitation Networks(SENet) 代码实现
注意机制模型对于任意的特征变换操作Ftr:X→UF_{tr}:X\rightarrow UFtr:X→U,其中X∈RH′×W′×C′X\in \mathbb{R}^{{H}'\times {W}'\times {C}'}X∈RH′×W′×C′, U∈RH×W×CU\in \mathbb{R}^{H\times W\times C}U∈RH×W×C,FtrF_{tr}Ftr表示类似卷积操作的特征变换过程。uc=vc∗X=∑s=1C′vcs∗xsu_{c}=v_{c}*X=\sum_{s=1}^{{原创 2020-06-11 17:09:18 · 3030 阅读 · 6 评论 -
Exception has occurred: NotFoundError Failed to create a directory: ./log\train\plugins\profile
环境Tensorflow2.0.0使用tensoflow.keras.callbacks.Tensorboard报错Exception has occurred: NotFoundErrorFailed to create a directory: ./log1\train\plugins\profile\2020-06-10_22-04-09; No such file or directory原因Tensorboard中log_dir地址格式错误,不应该用相对路径logfile_pat原创 2020-06-10 22:12:51 · 2360 阅读 · 0 评论 -
Tensorflow 2.* 网络训练(三) keras.callbacks 回调函数
回调函数(callback)是在调用fit 时传入模型的一个对象(即实现特定方法的类实例),它在训练过程中的不同时间点都会被模型调用。它可以访问关于模型状态与性能的所有可用数据,还可以采取行动:中断训练、保存模型、加载一组不同的权重或改变模型的状态。keras中也提供了丰富的回调API,我们可以根据需求自定义相关的对象。文章目录BaseLoggerCSVLoggerEarlyStoppingLearningRateSchedulerModelCheckpointReduceLROnPlateau自定义C原创 2020-06-10 09:31:11 · 3833 阅读 · 1 评论 -
Tensorflow 2.* keras 训练开始 loss 为NAN
问题描述在网络训练过程中,如果一开始就为nan,问题成因说明loss function的定义出现了问题,即·log(0), x/0这样一类计算错误解决方案在损失函数的定义方程式中,避免此类问题。比如:加一个小常数,tf.keras.backend.epsilon等于1e-7eps = tf.keras.backend.epsilon...原创 2020-06-09 16:09:21 · 1798 阅读 · 1 评论 -
Tensorflow 2.* 网络训练(二) fit(x, y, batch_size, epochs, verbose, validation_split, initial_epoch... )
在完成数据集合,网络搭建、以及训练编译设置以后,最后就是要开始训练(拟合)网络tf.keras.Model.fit如下fit的参数是相对比较多的,且参数间相互关系较为复杂fit( x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, samp原创 2020-06-09 15:32:32 · 7668 阅读 · 1 评论 -
Tensorflow 2.* 网络训练(一) compile(optimizer, loss, metrics, loss_weights)
在搭建完网络以后,就需要配置模型训练的函数,比如损失函数、误差方向传播优化算法等。Tensorflow 2.* 中compile编译函数便集成了此项功能,比如对于一个分类问题,常见的形式如下:model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])文章目录tf.keras.Model.compile()optimizer 优化器loss 损失函数metrics 监控原创 2020-06-09 15:31:51 · 7480 阅读 · 1 评论 -
Tensorflow2.* 熵 相对熵(KL散度)(交叉熵) 互信息 (信息增益)代码实现
基本的理论请参考博文随机定义两组向量表示真实分类标签和预测输出目录标题一维随机变量熵相对熵(relative entropy)或(Kullback-Leibler)KL散度交叉熵(cross entropy)三者关系二维随机变量熵相对熵(relative entropy)或(Kullback-Leibler)KL散度交叉熵(cross entropy)三维随机变量熵相对熵(relative entropy)或(Kullback-Leibler)KL散度交叉熵(cross entropy)一维随机变量原创 2020-06-03 23:54:13 · 1409 阅读 · 0 评论 -
Tensorflow keras.preprocessing.image.ImageDataGenerator 自定义图像数据集 (三)
主要以Keras的ImageDataGenerator图像生成器方式讲解如何定义数据集关于生成器函数的介绍,请参考:https://blog.csdn.net/Forrest97/article/details/106317598优点:针对大样本的图像数据集,生成器函数可以节约内存资源import tensorflow as tffrom tensorflow.keras.preprocessing.image import ImageDataGeneratorimport osimport原创 2020-05-24 17:40:32 · 1837 阅读 · 0 评论 -
Tensorflow2.0 keras MobileNetV2 代码实现
目录迁移学习自编程序BlockDepthwise Separable block参考网络介绍请参看:博文keras搭建深度学习模型的若干方法:博文直接上网络结构迁移学习依旧看看标准答案import tensorflow as tffrom tensorflow import kerasbase_model = keras.applications.MobileNetV2(weights='imagenet')base_model.summary()自编程序Block原创 2020-05-20 09:50:35 · 3673 阅读 · 2 评论 -
Tensorflow2.0 keras MobileNet 代码实现
目录迁移学习自编程序Depthwise Separable blockDepthwise Separable block参考网络介绍请参看:博文keras搭建深度学习模型的若干方法:博文直接上网络结构迁移学习依旧看看标准答案import tensorflow as tffrom tensorflow import kerasbase_model = keras.applications.MobileNet(weights='imagenet')base_model.summar原创 2020-05-19 21:04:33 · 1621 阅读 · 0 评论 -
Tensorflow2.* keras padding=valid or same ZeroPadding 边界填充设置
目录边界填充目的计算公式layers.ZeroPadding2Dpadding='valid' or 'same''valid''same'边界填充目的在卷积操作中有效控制特征层的size计算公式h'=|(h+p-k)/s| +1其中,h’表示卷积后特征层的高p表示上下填充的行数k表示卷积核在高度方向上的大小s表示滑动补上| |表示取整同理可得到w’=|(w+p-k)/s| +1layers.ZeroPadding2Dlayers.ZeroPadding2D可以定义padding原创 2020-05-19 10:22:05 · 1109 阅读 · 1 评论 -
深度学习 机器视觉 经典卷积神经网络 Tensorflow2.0 keras.applications
背景经典网络结构就是我们使用深度学习进行烹饪的食材,活学活用好我们的经典神经网络,为我们的实际应用提供事半功倍的效果经典的深度卷积神经网络作为机器视觉中图像特征提取的重要工具,被广泛应用于图像分类、语义分割和目标检测等实际场景中。2012到2017年的I全球最大的ImageNet大赛中涌现了一大批性能突出的网络,基于此数据集训练的卷积神经网络被认为具有突出的图像特征提取的功能。由于一般的个...原创 2020-04-22 19:47:15 · 4760 阅读 · 0 评论 -
Tensorflow2.0 keras DenseNet121 系列 代码实现
目录迁移学习自编代码参考模型介绍请参看:博文keras搭建深度学习模型的若干方法:博文迁移学习import tensorflow as tffrom tensorflow import kerasbase_model = keras.applications.DenseNet121(weights='imagenet')base_model.summary()自编代码在这里插入代码片参考https://github.com/titu1994/DenseNethttp原创 2020-05-17 11:25:42 · 6771 阅读 · 2 评论 -
Tensorflow2.0 keras InceptionResNetV2代码实现
目录迁移学习自编代码定义卷积单元Stem模块InceptionRes A模块InceptionRes B模块InceptionRes C模块Reduction AReduction BBuild Inception-ResNet补充:模型介绍请参看:博文出处:Google AI迁移学习首先还是看看标准答案import tensorflow as tffrom tensorflow import kerasbase_model = keras.applications.Incept原创 2020-05-16 15:07:15 · 3188 阅读 · 8 评论 -
Tensorflow2.0 keras ResNet18 34 50 101 152系列 代码实现
模型介绍参看:博文可以产出ResNet系列最多层数达到了152层,但是基本结构可以分为四个模块,即特征层分别为64,128,256,512的卷积层block;每个卷积层block中如上图,由两组卷积层由两层卷积核大小为3x3组成,每一层采取了标准化(normalization)处理,激活函数是relu,第二个relu在残差处理后进行;但是根据不同深度, 每个卷积层模块的block数量存在差异,可以分为两组(18,34)与(50,101,152);因此建立基本模块类建立ResNet是更优的选择。原创 2020-05-15 17:02:18 · 9232 阅读 · 3 评论 -
tensorflow2.0 Keras VGG16 VGG19 系列 代码实现
模型介绍参看:博文VGG16迁移模型先看看标准答案import tensorflow as tffrom tensorflow import kerasbase_model = keras.applications.VGG16(weights='imagenet')base_model.summary()自建模型import tensorflow as tffrom tensorflow import kerasfrom tensorflow.keras原创 2020-05-15 10:16:10 · 5112 阅读 · 0 评论 -
Tensorflow 2.0 视频分类(四) C3D 3D convolutional Networks
论文学习摘要开篇明义,三点结论:3D 卷积网络比2D卷积更适合提取时空特征;3x3x3的卷积核是最好的filter结构;C3D与线性分类器的组合有在UCF101数据集上很好的分类效果介绍视频分类在动作识别、非常规动作识别、活动理解、视频内容描述等领域;视频描述器的四个特点:通用、有竞争力、高效、简洁;卷积网络并不适用于处理视频数据,因此提出 C3D.不同数据集上的表现:除Sport 1M上,其他数据比之前最好的都要好。优秀!相关研究传统机器视觉领域的SIFTs(spatio-t原创 2020-05-14 22:08:36 · 2113 阅读 · 5 评论 -
Tensorflow 2.0 keras.models.Sequential() Model() 创建网络的若干方式 及共享权重问题
keras建立网络的方法可以分为keras.models.Sequential() 和keras.models.Model()、继承类三种方式。目录keras.models.Sequential() ()keras.models.Model()继承类keras.models.Sequential() ()适用于简单线性堆叠网络。流程:创建Sequential()对象,逐层堆叠网络import tensorflow as tffrom tensorflow.keras import layers,原创 2020-05-14 16:45:43 · 8079 阅读 · 8 评论 -
Tensorflow 神经网络 二分类 多分类 输出层网络结构 与loss计算的from_logits设置
针对二分类问题,最后一层的输出可以采用不同的设置方式,关键是取决于目标值y_target的数据处理形式。目录目标输出 (0 or 1)方案一方案二from_logits设置结果比较方案一方案二无概率处理结果目标输出 one_hot 编码(10 or 01)目标输出 (0 or 1)如果y_target处理成(N, 1)格式,即布尔型格式(但本质应该还是整型)最后一层的网络结构,采用1个神经元的全连接网络:方案一tf.keras.layers.Dense(1) #最后层model.compil原创 2020-05-13 12:01:49 · 4551 阅读 · 0 评论 -
with tf.GradientTape() as tape 梯度带 Tensorflow自动求导API
梯度带(Gradientape)的定义TensorFlow 为自动微分提供了 tf.GradientTape API ,根据某个函数的输入变量来计算它的导数。Tensorflow 会把 ‘tf.GradientTape’ 上下文中执行的所有操作都记录在一个磁带上 (“tape”)。 然后基于这个磁带和每次操作产生的导数,用反向微分法(“reverse mode differentiation”)...原创 2020-05-04 10:49:04 · 18136 阅读 · 6 评论 -
Tensorflow2.0 卷积神经网络可视化 (三)类激活热力图 (CAM,class activation map)
在神经网络分别中,我们不仅想知道最终预测结果,还需要了解网络是凭借图像什么特征进行判断的。其中类激活热力图 (CAM,class activation map)就是一种很好的呈现方式。目录标题类激活热力图 (CAM,class activation map)导入ImageNet VGG16网络加载任一图片构建多特征层输出模型应用Grad-CAM 算法绘制激活热力图前三类结果比较参考类激活热力图...原创 2020-05-03 14:45:42 · 10100 阅读 · 15 评论 -
Tensorflow2.0 卷积神经网络可视化 (一)中间特征层可视化
目录标题中间特征层可视化导入ImageNet VGG16网络加载任一图片构建多特征层输出模型所有中间层的显示参考中间特征层可视化导入ImageNet VGG16网络导入基础包import numpy as npimport matplotlib.pyplot as pltimport tensorflow as tf导入ImageNet VGG16网络VGG16_model = ...原创 2020-05-02 21:13:32 · 9636 阅读 · 18 评论 -
Tensorflow2.0 自定义图像数据集 读取加速 tf.data.Dataset.cache (二)
接上一篇Tensorflow2.0 tf.data.Dataset.from_tensor_slices 自定义图像数据集 (一要这里写目录标题Tensorflow图像数据集加载图片路径和标签读取图像预处理创建Tensorflow Dataset对象方案一(不推荐)方案二(推荐)Dataset对象的预处理输入网络Pytorch参考Tensorflow图像数据集加载从tf.keras...原创 2020-05-01 21:52:56 · 3467 阅读 · 0 评论 -
Tensorflow2.0 tf.data.Dataset.from_tensor_slices 自定义图像数据集 (一)
Pytorch标准二级目录名为类别的图像存储格式数据,采用Pytorch自带APIdb = torchvision.datasets.ImageFolder(root='dir', transform=preprocess)Tensorflow标准二级目录名为类别的图像存储格式数据,采用Pytorch自带APIdb = torchvision.datasets.ImageFolder(...原创 2020-05-01 21:22:57 · 2943 阅读 · 0 评论 -
Tensorflow2.0 迁移学习 Fine tune 模型库Tensorflow Hub
参考Tensorflow官网的图像迁移学习的训练内容:使用TF Hub进行迁移学习https://tensorflow.google.cn/tutorials/images/transfer_learning_with_hub使用预训练的CNN进行迁移学习https://tensorflow.google.cn/tutorials/images/transfer_learning模型库...原创 2020-04-30 15:20:49 · 1261 阅读 · 0 评论 -
Tensorflow可视化 Tensorboard
如何在训练过程中直观地观察loss和acc的曲线?TensorBoard是Tensorflow可视化工具,可以用来展现标量、文本、音频、图像、网络结构、网络各层权值偏移量的统计直方图等。Tensorboard虽然是个好工具,但对于计算机知识欠缺的小白,操作稍有些麻烦。**操作关键点:**基于Web浏览器可视化,即Tensorflow将监控数据写入文件、需要利用浏览器Web后端查看对应的数据。...原创 2020-04-28 15:51:49 · 224 阅读 · 0 评论