
tf2与keras深度学习
tf2与keras深度学习的一些常用案例代码
万里鹏程转瞬至
一名热爱深度学习算法实践的算法工程师,工作日长期活动在线,有项目研发技术问题均可私聊。
展开
-
深度学习16 tf2环境下的代码兼容实战记录
因为keras的后端通常选用的是tensorflow,一些公开的tf1项目在代码中使用keras实现建模。然后,当运行环境从tf1变成tf2后,通常会报一堆版本不兼容的错。既有tf代码与tf环境的兼容问题,还有tf代码与keras环境的兼容问题。1、keras与tf兼容问题不要使用原始的keras环境,把keras相关的代码全部改成tensorflow.keras。因为当keras版本与tf版本不兼容时,会导致模型无法训练。from tensorflow import kerasfrom原创 2022-03-17 19:32:00 · 1156 阅读 · 0 评论 -
深度学习15 基于keras的知识蒸馏2(实现kl loss和温度T)
本文讲述的知识蒸馏基于迁移学习所展开,所以对迁移学习(教师网络)中的一些细节有所要求,具体请见深度学习3 使用keras进行迁移学习,主要是指对教师网络的最后一个dense层不能使用激活函数,应添加一个激活层进行激活输出,这样子方便移除激活函数,自行对数据进行升温,然后再激活。1、导入基本库、创建学生模型重点说明:(不关注训练速度可不必理会)通过该代码可以设置使用16位的浮点数进行训练,可以提升batch size,提升运输速度from tensorflow.keras.mixed_prec原创 2021-09-12 19:26:13 · 1945 阅读 · 9 评论 -
深度学习14 数据扩充效果查看
基于keras的数据扩充方法参数较为繁多,在本博客中将一一测试ImageDataGenerator的各个参数的扩充效果。1、扩充参数列表说明可设置的参数列表中,关于数据扩充的方法一共有11个,其中fill_model不参与测试datagen = image.ImageDataGenerator( fill_mode='nearest', #默认值,操作导致图像缺失时填充方式。constant,nearest,eflect原创 2021-09-10 16:54:19 · 617 阅读 · 0 评论 -
深度学习14 基于ImageDataGenerator的语义分割数据扩充
from PIL import Imageimport numpy as npfrom keras.preprocessing import imageimport os# 生成图片地址和对应标签file_dir1 = '小数据'save_path1="小数据-kc"file_dir2 = '小数据-mask'save_path2="小数据-mask-kc"shape=(200,200)seed = 1# 设置生成器参数datagen = image.ImageDataGenerat原创 2021-08-13 13:50:25 · 519 阅读 · 0 评论 -
深度学习12 基于keras的知识蒸馏
知识蒸馏原理请自行补充,本文只公开知识蒸馏的代码。在迁移学习中,所得到的模型尺寸太大,运算量较多,不利于轻量化部署,因此需要进行知识蒸馏。from keras.preprocessing.image import ImageDataGeneratorfrom keras.utils import np_utilsfrom keras import applications,Model,layersfrom keras.models import Model,load_modelfrom s原创 2021-08-10 18:03:06 · 1525 阅读 · 0 评论 -
深度学习 11 keras迁移学习模型拼接
在本章节使用的迁移学习方法需要加载两个模型,无法对模型进行串联式训练,因此补充博文,实现对模型拼接from keras.preprocessing.image import ImageDataGeneratorfrom keras.utils import np_utilsfrom keras import applications,Model,layersfrom keras.models import Model,load_modelbatch_size=32#-------------原创 2021-08-10 17:56:12 · 934 阅读 · 0 评论 -
深度学习 9 图像分布查看
# -*- coding: utf-8 -*-"""Created on Thu Jun 10 15:56:45 2021@author: Administrator"""# coding:UTF-8import cv2,osimport numpy as np class HashCacl: def cal_hash_code(self, cur_gray): s_img = cv2.resize(cur_gray, dsize=(8, 8)) .原创 2021-06-19 10:38:02 · 1421 阅读 · 0 评论 -
深度学习8 keras中triplet network的搭建
1、基本库导入import kerasimport numpy as npimport matplotlib.pyplot as pltimport randomfrom keras.datasets import mnistfrom keras.models import Modelfrom keras import layersfrom keras.optimizers import RMSpropfrom keras import backend as K...原创 2021-06-15 14:30:00 · 2585 阅读 · 0 评论 -
深度学习 各版本的tensorflow源码编译库、CUDA、cudnn下载
拒绝二道贩子,下载直接到。从1.x到2.x都有https://github.com/tensorflow/tensorflow/tags原创 2021-05-06 17:36:13 · 490 阅读 · 0 评论 -
深度学习8 keras中triplet network里样本对的选择
1、样本对的选择def create_batch(x_train,y_train,batch_size=256): x_anchors=[] x_positives=[] x_negatives=[] for i in range(0, batch_size): #随机选择一个样本x random_index = random.randint(0, x_train.shape[0] - 1) x_anchor = x_tr原创 2021-04-19 16:44:00 · 512 阅读 · 0 评论 -
深度学习7 hsigmoid硬件友好的激活函数实现
hsigmoid激活函数是对sigmoid的近似,尽可能对sigmoid进行拟合。值域为【0,1】公式为:,相比于sigmoid的指数运算可以节省大量的计算时间。基于relu函数实现,小于0置0,大于1置1from keras.utils.generic_utils import get_custom_objectstmp=0def hsigmoid(x): x=x/6+0.5 x=K.relu(x,max_value=1)*x/x return xget_cus原创 2021-03-26 18:12:36 · 3172 阅读 · 1 评论 -
深度学习6 基于ImageDataGenerator的数据集划分
基于keras的ImageDataGenerator,在划分数据集时不需要人为的把数据分为两部分,可以通过设置datagen.flow_from_directory的subset='validation'或'training'来实现,其中的seed是随机种子控制读取数据的顺序。1、面向分类任务的数据集划分from keras.preprocessing.image import ImageDataGeneratordatagen = ImageDataGenerator(rescale=1.0/原创 2021-03-26 15:19:31 · 2642 阅读 · 0 评论 -
深度学习5 keras实现基于卷积的自编码器
关于自编码器没有太多的介绍,基本描述可以查看https://blog.youkuaiyun.com/a486259/article/details/112302917,更详细的介绍可以查看https://keras-cn.readthedocs.io/en/latest/legacy/blog/autoencoder/基于卷积的自编码器主要数依赖于卷积、池化和上采样实现,可以有效的采集的像素之间的空间依赖,其对于图像数据效果和性能都优于全连接编码器自编码器的构建流程可以参考:https://blog.csdn.原创 2021-01-07 11:11:19 · 1007 阅读 · 1 评论 -
深度学习4 keras实现基于全连接的自动编码器
自动编码器是一种数据的压缩算法,其压缩和解压缩的函数是通过神经网络实现的。自动编码器=编码器+解码器。编码器的输出既是解码器的输入,解码器输出的shape与编码器输入的shape相同,因此自动编码器其输入和输出的形状是相同的。编码器输出既是自动编码器的编码结果编码器的结构自动编码器的特点1)数据相关:自动编码器只能压缩那些与训练数据类似的数据。对于与训练数据不相似的输入无能为力;2)有损压缩:自动编码器解压缩的输出与原来的输入相比在质量上有所不足;3)自动学习:训练自动编码器无需特原创 2021-01-07 10:14:44 · 1861 阅读 · 3 评论 -
深度学习3 使用keras进行迁移学习(重新修订)
采用模型分离的方式构造迁移学习,可以降低反向传播时卷积运算的工作量。1、卷积基的提取首先选定迁移的目标并提取其卷积基 可按照不同的需求提取迁移特征。keras除此外还有 DenseNet121、MobileNet、Xception等网络可以用于迁移注意:要按照个人需求和电脑配置调整shape,batch_size, 和models数组内的模型名称from keras.preprocessing.image import ImageDataGeneratorfrom keras.ut...原创 2021-01-06 21:06:16 · 2206 阅读 · 2 评论 -
深度学习3 迁移学习分批次保存特征并训练全连接
from tensorflow.keras.preprocessing.image import ImageDataGeneratorfrom tensorflow.keras import applications,Modelfrom tensorflow.keras.layers import Dense,Dropout,Input,GlobalAveragePooling2Dimport numpy as npimport os,gcbatch_size=100#ResNet50,VGG1.原创 2021-08-18 23:02:00 · 351 阅读 · 0 评论 -
深度学习2 使用keras构建卷积神经网络
1、函数库的导入from keras.models import Sequentialfrom keras.layers import Dense,Flatten,GlobalAveragePooling2Dfrom keras.layers.convolutional import Conv2Dfrom keras.layers.convolutional import MaxPooling2Dfrom keras.models import load_model2、模型的构建与加载原创 2021-01-05 15:45:28 · 1528 阅读 · 0 评论 -
深度学习1 基于h5py使用数据迭代器训练超过内存的数据
背景在使用keras训练图像数据时,通常使用ImageDataGenerator()的方式迭代目录,分批次读取。而对于容量超大甚至超过内存数组文件(npy文件或者mat文件)时无法通过文件迭代器来分批次读取,因此提出该方法。解决方法1、安装h5py库 使用该命令:pip install h5py2、将数组文件载入内容重新保存为h5py文件。分批次将数组存为h5py的方法可以查阅https://blog.youkuaiyun.com/a486259/article/details/86154857...原创 2021-01-05 15:22:53 · 802 阅读 · 0 评论