tensorflow笔记
文章平均质量分 80
本专栏为tensorflow的学习笔记,课程链接
https://study.163.com/course/courseMain.htm?courseId=1004573006
tensorflow版本为tensorflow-gpu=2.3.0
Suyuoa
这个作者很懒,什么都没留下…
展开
-
1.安装tensorflow
本专栏使用的tensorflow版本为tensorflow-gpu=2.3.0,在windows上运行,cuda版本为10.1,cudnn版本为7.6.51.安装显卡驱动我使用的显卡为 NVIDIA GeForce GTX 970M,我们首先查看一下当前有没有显卡驱动,按下win + R 键,输入cmd点击确定,之后在终端输入nvidia-smi如果出现这种情况则表示显卡驱动已经安装完毕,如果没安装则进入下面安装步骤我们在确认当前计算机有显卡的情况下,打开文件管理器,点击此电脑.原创 2021-07-13 11:32:42 · 730 阅读 · 0 评论 -
附录2-tensorflow目标检测
源码来自作者Bubbliiiing,我对参考链接的代码略有修改,网盘地址提取码:dvb1。原创 2023-02-13 17:55:59 · 477 阅读 · 0 评论 -
46.变分自编码器 VAE
变分自编码器(Variational Auto-Encoders,VAE)VAE是生成数据用的,GAN(对抗神经网络)也是生成数据用的在上一节的自编码器也可以生成数据,但是它对中间encode的变量是由要求的,VAE可以理解为是自编码器的decode部分的改良,它对中间变量有限制,方法为限制中间(隐含)变量的KL散度KL散度越小,两个变量的分布就越相近,我们一般搞一个预设的分布变量,比如正太分布,通过降低KL散度,可以是中间变量也趋近于正太分布KL散度和我们后面使用的损失函数有关,像U的那个参原创 2021-12-24 14:55:45 · 3254 阅读 · 0 评论 -
45.自编码器
自编码器是一种神经网络,它的输入与输出是一致的它包含两个部分,第一部分是编码器(Encoder),第二部分是解码器(Decoder),编码器把图像转换为向量,解码器是将向量再转换为图像下面我们使用手写数字数据集mnist创建自编码器目录1导入库2加载数据集3训练整体自编码器3.1编码过程3.2解码过程4只训练编码过程5只训练解码过程6测试编码与解码1导入库2加载数据集由于我们这里只要图像,所以他们的l...原创 2021-12-22 15:48:31 · 717 阅读 · 0 评论 -
44.一维卷积-叶子分类
我们用的数据集为train.csv,我们打开看一下其中id是编号,species是种类,后面的margin1这些是他某一部分的特征,一共有三种大的特征类型(margin,shape,texture),三种特征都是从1-64(如margin1-margin64),特征以浮点数的形式记录了下来,我们使用后面的特征取预测前面的species目录1导入库2整理数据2.1读取数据2.2数据的基本情况2.3提取训练输入与输出2.4分割训练集与测试集2.5...原创 2021-12-21 16:04:11 · 1078 阅读 · 1 评论 -
43.一维卷积-航空公司评论情感预测
之前我们使用的都是二维卷积,二维卷积处理图像问题,这次我们使用一维卷积,一维卷积处理序列问题一维卷积就是在一个序列上进行滑动,从而得出一维卷积的结果,详细一维卷积的介绍可以看一下这个深度学习面试题09:一维卷积(Full卷积、Same卷积、Valid卷积、带深度的一维卷积) - 黎明程序员 - 博客园下面我们使用一维卷积对航空评论数据进行训练,数据集选用了与41.RNN循环网络-航空评论情感预测_potato123232的博客-CSDN博客这里的数据集相同,数据预处理部分与连接中的方法也完全相...原创 2021-12-20 15:55:51 · 170603 阅读 · 0 评论 -
42.RNN 空气污染预测
我们使用的数据集为 北京空气_2010.1.1-2014.12.31.csv我们打开看一下,依次是编号,年月日小时,以及各种天气指标我们可以从上面的数据看到,在pm2.5这一列是有NA这种值的,这种值是没检测的意思,我们后面会处理这种NA值天气指标的意义如下图所示我们使用RNN通过未来某一天前5天的露点,温度,大气压,风向,风速,累计雪量,累计雨量,预测未来与PM2.5状态某一天的PM2.5状态我们的数据最后一次采样的时间是2014-12-31 23:00:00,也就是说,在原创 2021-12-20 10:41:19 · 1577 阅读 · 4 评论 -
41.RNN循环网络-航空评论情感预测
RNN(循环神经网络)主要处理序列数据LSTM就是循环神经网络,GRU也是一个循环神经网络我们下面使用循环神经网络对航空评论数据集进行处理航空评论数据集是这个名为Tweets的csv文件我们打开看一下数据集是脱敏处理过的,他的内容包含下列部分tweet_id 推特id airline_sentiment 对航空公司的情绪(积极[postive],消极[negative],中性[neutral]) airline_sentiment_confidence 该航班的评分,该值原创 2021-12-13 15:33:58 · 2106 阅读 · 0 评论 -
40.图像语义分割-LinkNet
LinkNet的论文地址https://arxiv.org/pdf/1707.03718.pdfLinkNet相对于ResNet的精度低一点,但是相应速度得到了提升LinkNet的网络结构是这样的full-conv是反卷积其中的Encoder Block是这样的其中(m,n)与(n,n)代表的是输入图像的形状,m(括号中的第一个值)表示的是图像的维度,如果我们是初始输入进来的图,那m就代表图像的通道,如果是第二个EncodeBlock那么就代表上一个EncodeBlock的卷积核.原创 2021-12-10 15:13:35 · 2968 阅读 · 1 评论 -
39.残差网络ResNet
1残差结构有残差连接的部分叫残差网络,Resnet就是残差网络,残差连接是让映射出来的结果与输入做残差操作,得出残差的结果下图画红圈的地方叫做残差连接,之前我们没有这个连接,就是让机器通过若干层去学习输入与输出的关系,加入残差连接后,机器会去学习输入与残差结果的关系我们下面就使用上面的网络结构,搭建一个简易的ResNet网络2构建小型残差网络这个就是网络结构图中的权重层先定义层再定义前向传播,层分别为一层卷积,一层批标准化,一层卷积,一层批标准化在前向传播的过程中,先...原创 2021-12-08 14:18:59 · 1019 阅读 · 1 评论 -
38.图像语义分割-UNET
目录1UNET简介2数据集介绍2.1labels.py2.2展示标注数据集图像3代码部分3.1导入库3.2读取路径3.3创建数据集3.4定义加载图像函数3.4.1concat的用法3.4.2tf.image.resize()3.4.3回到定义的crop_img()方法3.4.4定义翻转方法3.4.5定义加载训练图像函数3.4.6定义加载测试图像函数3.5定义相关变量3.6加...原创 2021-12-07 11:54:58 · 1457 阅读 · 1 评论 -
37.自定义层与模型
之前我们使用的层都是在tf.keras.layers中封装好的,在我们实际应用上,封装好的层应用的也比较多,但有的时候我们需要让层实现在封装层中没有的功能,这个时候我们就要自定义层所有的自定义层都要继承tf.keras.layers.Layer,才能被使用,我们在自定义类前先导入库1自定义全连接层 dense首先我们创建一个类,这个类需要继承tf.keras.layers.Layer1.1定义初始化方法之后我们定义初始化函数,初始化函数有两个参数,一个是神经元个数(uni...原创 2021-11-16 09:14:23 · 504 阅读 · 0 评论 -
36.图像语义分割-FCN
图像语义分割是计算机读懂图像的基础,所以叫图像语义分割,左侧是图像语义分割,右侧是实例分割,语义分割关注种类,实例分割关注个体,像我们左侧的语义分割,分割后机器就能大致了解,图里有5只羊,1个人,1条狗,这样我们再结合其他的操作,就可以让机器对这个图片进行描述给不同类的物体赋给不同的数值语义分割我们有两个网络可以使用,一个是FCN(fully convolutional network,全卷积网络),另一个是Unet,有关网络的详细介绍可以看一下这篇文章深度学习:语义分割 FCN与Unet.原创 2021-11-11 17:51:36 · 4053 阅读 · 3 评论 -
35.gpu的使用与分配
在tensorflow中,tf.config.experimental中的方法很有可能会随着版本的提升改动或删除目录1检查GPU是否可用2获取当前程序可使用的GPU列表3获取当前程序可使用的CPU列表4设置程序可见的范围5设置显存使用策略5.1程序用多少给多少,多的不给5.2给固定大小的显存1检查GPU是否可用如果可用会返回True,不可以则返回False2获取当前程序可使用的GPU列表也有一种情况是机器上有GPU,...原创 2021-11-09 11:28:40 · 2184 阅读 · 0 评论 -
34.图运算模式
图运算模式可以提高代码的运行效率,我们训练时使用的model.fit就是图运算模式,自定义训练使用的是eager模式。图运算模式与eager模式不能同时存在于同一语句中model.fit相对自定义训练优点是代码简洁,运算速度快,缺点是不能更好的把控训练中的各项数据,比如我们目前就无法在每一个epoch中都保存一个完整的模型我们也可以在自定义训练中使用图运算模式,但是这样就有可能导致部分语句不能运行(报错)我们使用上一章的代码,将其加载图像部分改为图运算模式图运算的标志为@tf.fun原创 2021-11-09 10:38:09 · 248 阅读 · 0 评论 -
33.图像定位
目录1常见图像处理任务2数据集展示3训练模型3.1导入库3.2处理数据集路径3.3定义解析xml函数3.4创建数据集3.5创建模型3.6编译模型3.7训练模型3.8加入tensorboard3.9加入检查点3.10保存模型4预测模型5扩展知识1常见图像处理任务我们常见的图像处理任务有下面几种分类任务给机器一张图,它能知道,这个图是猫的一张图片分类+定位给机器一张...原创 2021-11-08 14:47:17 · 6214 阅读 · 0 评论 -
32.自定义训练保存检查点
我们先搞一个自定义训练首先导入库读取数据集后归一化然后创建新的数据集并设置batch设置优化器与损失函数设置四个指标设置损失计算设置训练与测试步骤定义整体训练步骤并训练目录1保存检查点2使用检查点1保存检查点首先我们创建一个文件夹用于保存检查点文件一定要保存到另一个文件夹中,要不后面的调用会有问题之后我们添加检查点,使用tf.train.Checkpoint()添加检查点对象,参数为优化器与模型之后使用...原创 2021-11-05 10:11:42 · 264 阅读 · 0 评论 -
31.使用model.fit训练中保存检查点
目录1保存检查点2加载检查点3保存整个模型我们使用回调函数 tf.keras.callbacks.ModelCheckpoint()来保存检查点我们先看一下这个回调函数的参数filepath 我们要保存文件的路径与名字 monitor 监控指标,默认为val_loss verbose 是否显示,默认为0(不显示) save_best_only 是否只保存指标最好的(如果有更好的会替代掉之前的,如果没有就不保存) save_weights_only 是否只保存权...原创 2021-11-03 17:50:51 · 1912 阅读 · 5 评论 -
30.模型保存
这一张我们主要介绍一下模型保存的方式,我们训练fashion_mnist这个数据集作为例子首先导入库之后导入数据集归一化建立模型编译模型训练模型,我们训练三个epoch就行之后我们评估一下这个模型其中有一个参数verbose,它有两个可选值,0或1,0是不显示,1是显示,默认为1下面我们来保存模型,模型有三个部分组成,分别是模型权重(每一层的可训练参数是多少) 模型架构(神经网络的每一层是什么) 优化器配置(神经网络的编译情况)原创 2021-11-03 11:26:20 · 1193 阅读 · 0 评论 -
29.多输出模型的自定义训练
我们对上一章的代码进行更改,我们简单看一下之前的代码,首先整理路径之后创建数据集与之前略有区别,train数据集不要加repeat(),否则会一直循环下去,以至于不能完成一个epoch再之后创建网络下面是自定义训练中与前面代码不同的地方目录1定义优化器2定义损失函数3定义指标4定义训练步骤5定义测试步骤6定义指标列表7定义训练过程8预测模型1定义优化器之后我们定义优化器,这次我们减小一点学习速率...原创 2021-11-01 15:23:01 · 301 阅读 · 0 评论 -
28.多输出模型
之前我们所有项目的输出都是单输出,比如我们的猫狗分类,输出的仅仅为图像中的动物是猫还是狗,我们下面来搞多输出模型,举个例子,多输出的意思是在模型判定图像是猫还是狗的同时,它也会输出比如动物的毛色等其他相关信息我们先看一下我们的数据集,数据集名称为muti_outputs_dataset文件夹分别有七种物品,分别是 黑牛仔裤,黑鞋子,蓝裙子,蓝牛仔裤,蓝衬衫,红裙子,红短袖,数据集中共有2525张图片在这次的训练中,我们不仅要识别出物体的种类,也要识别出物体的颜色目录1导入库..原创 2021-10-29 17:16:35 · 1288 阅读 · 0 评论 -
27.其他预训练模型
常用的模型还有下面这些使用详情可以到这个网址中了解一下应用 Applications - Keras 中文文档我们下面使用Xception做一个例子,一直到创建模型之前与 25.迁移学习 的代码都相同,我们简单看一下之后我们创建模型目录1创建模型2建立模型3编译模型4训练模型5保存模型6预测模型1创建模型首先我们先创建卷积基依然是第一次运行是会下载模型这里我们多了pooling这个参数,这个参数是处...原创 2021-10-26 16:27:54 · 80 阅读 · 0 评论 -
26.微调预训练模型
我们上一章令卷积基全部不进行训练,在这一章我们锁定卷积基的一部分,训练另一部分,在这个过程中我们使用上一章我们训练好的全连接层部分目录1导入库2读取模型3提取卷积基4组建新模型5添加数据集6编译模型7训练模型8预测模型1导入库2读取模型我们看一下读取的模型我们现在读取的模型之前训练的所有参数也同时读取了进来3提取卷积基现在我们的整个模型都是可训练状态然后我们提取出模型的卷积基础部分,之后...原创 2021-10-26 16:15:41 · 459 阅读 · 0 评论 -
25.迁移学习
目录1 预训练网络2代码实现2.1制作数据集2.2建立模型2.3编译模型2.4训练模型2.5预测模型1 预训练网络我们之前每次创建模型,模型自我的第一步都是初始化自己的参数,初始化的参数都是随机的,如果我们使用预训练网络,我们初始化的参数就是之前已经训练好的神经网络keras中包含VGG16,VGG19,ResNet50,Inception v3,Xception等网络下面这个图是VGG的六种网络结构VGG16中16的意思是网络中可...原创 2021-10-26 09:35:41 · 139 阅读 · 0 评论 -
24.猫狗数据自定义训练
我们先看一下我们的数据集train数据集中有8000张猫的图片与8000张狗的图片,分别放在cat,dog两个文件夹中test数据集中有500张猫的图片与500张狗的图片,分别放在cat,dog两个文件夹中猫狗的差异相对于飞机与湖泊的差异小了不少,所以我们需要大量的数据来训练,数据集可以在kaggle上下载,原数据集有25000张猫狗训练数据,12500张猫狗测试数据,我们只取其中的一部分目录1导入库2分配GPU资源3获取图片路径4获取每张图片...原创 2021-11-09 09:23:24 · 2673 阅读 · 3 评论 -
23.自定义训练中使用Tensorboard
由于我们自定义训练中没有model.fit(),所以按照之前的方法添加Tensorboard是做不到的我们对 20.自定义训练(非编译训练) 的代码做修改导入datetime库定义current_time定义train与test日志路径然后创建train与test的写对象之后修改我们的训练函数训练之后打开tensorboard看一下,发现有我们保存的四个变量颜色比较浅,下面每个图上都有两根曲线acclossval_accval_.原创 2021-10-19 15:28:15 · 285 阅读 · 0 评论 -
22.自定义变量的Tensorboard可视化
代码和上一章差不多,我们在上一章的基础上进行更改目录1随epoch更改学习速率2将变化情况写在文件中1随epoch更改学习速率我们当前想让学习速率随epoch的变化而变化,首先我们定义一个learning_rate随时间变化的函数然后我们创建一个回调函数,使用tf.keras.callbacks.LearningRateScheduler()参数是上面创建的函数然后把回调函数放在callbacks的列表中此时进行训练我们还不能在tensorboard中...原创 2021-10-19 14:58:39 · 394 阅读 · 0 评论 -
21.Tensorboard
tensorboard可以可视化我们的训练过程,我们训练mnist作为例子目录1导入库2导入数据3处理数据4创建数据集5建立模型6编译模型7创建tensorboard8训练模型9显示tensorboard1导入库2导入数据3处理数据4创建数据集5建立模型6编译模型7创建tensorboard首先我们创建一个时间文件夹,以便我们进行每一次训练后都保...原创 2021-10-19 13:47:52 · 418 阅读 · 0 评论 -
20.自定义训练(非编译训练)
我们使用手写数据集mnist目录1导入库2导入数据3处理数据4创建数据集5建立模型6定义优化器与损失函数7定义训练函数7.1看一下训练数据7.2看一下未训练模型的预测结果7.3定义损失值函数7.4定义训练步骤7.5定义训练函数8学习怎么定义评估参数8.1均值任意参数8.2定义正确率9加入评估参数9.1更改训练步骤函数9.2定义测试步骤函数9.3更改训练函...原创 2021-10-18 13:55:41 · 302 阅读 · 0 评论 -
19.Eager模式
Eager模式每进行一步输入就可以得出一步结果,我们下面直接用代码举例子首先我们导入库,查看此时是否是eager模式,tensorflow2.0及以上的版本,默认开启eager模式我们之前的项目均开启了Eager模式,下面介绍一个常见的张量操作目录1计算获取张量2直接创建张量 tf.constant()3转换获取张量 tf.conver_to_tensor()4张量与python数据类型变量计算5张量与np.ndarray计算6直接转换张量...原创 2021-10-16 11:00:26 · 867 阅读 · 0 评论 -
18.电影评论数据分类
电影评论数据是tensorflow的内置数据目录1导入库2导入数据集3处理数据集4建立模型5编译模型6训练模型7优化模型1导入库2导入数据集如果第一次使用会自动下载我们看一下这个数据集的大致情况得知了有25000个数据,其余情况不了解我们取x_train的第0号数据看一下我们可以看出,这是一组脱敏数据,上面的数字都对应着一个单词,也就是说我们的x_train数据把数字对应字符转换过来,它是一...原创 2021-10-16 10:44:36 · 712 阅读 · 0 评论 -
17.200种鸟类图片分类
这个是一个多分类问题,我们先看一下这个数据集首先我们有一个文件夹叫birds_train原创 2021-10-16 10:24:38 · 3362 阅读 · 9 评论 -
16.批标准化
目录1理论1.1从前定义的标准化1.2现在定义的标准化与批标准化1.3批标准化的好处1.4批标准化在代码中的使用方式1.5批标准化的执行过程1.5.1训练中的执行过程1.5.2预测中的执行过程1.6批标准化的参数2代码实现1理论1.1从前定义的标准化我们先说什么是标准化,在传统机器学习中标准化也叫归一化,是将一组数据映射到某一范围的过程,这一步的目的是去除不同数据取值范围的影响,比如有的数据取值范围[0,9]...原创 2021-10-12 10:16:11 · 448 阅读 · 0 评论 -
15.卫星图片分类
我们这次用的数据集不再是tensorflow中内置的数据集,而是自定义的数据集,我们先看一下我们的数据所有的数据都存储在2_class这个文件夹中文件夹中有airplane与lake这两个子文件夹分别存放的是飞机与湖泊的卫星图像airplanelake1导入库我们这里首次用到了glob这个库,这个库是python自带的库,用于处理路径中的文件的random也是Python自带的库,用于进行一些随机的操作2数据处理2.1获取图像首先我们获...原创 2021-10-12 09:47:57 · 2953 阅读 · 7 评论 -
14.卷积神经网络CNN
目录1理论部分1.1卷积1.1.1主要参数1.1.2Conv2D中的所有参数1.2池化1.3卷积神经网络整体结构2代码实现2.1导入库2.2加载数据集2.3数据处理2.3.1增加train_images维度2.3.2增加test_images维度¶2.4建立模型2.5编译模型2.6训练模型2.7优化模型1理论部分卷积神经网络是主要做计算机视觉的网络,当然它不仅仅只能作用...原创 2021-10-09 11:27:54 · 747 阅读 · 0 评论 -
13.tf.data使用实例
目录1导入库2加载数据集3归一化4创建数据集4.1创建训练图片数据集4.2创建训练标签数据集4.3把这两个数据集合并到一起5处理训练集5.1乱序5.2重复5.3设置批次6创建测试集7建立模型8编译模型9训练模型1导入库2加载数据集我们这次换为mnist数据集,这个数据集是手写数字的数据集3归一化我们此时看一下train_iamge的shape...原创 2021-09-30 14:50:49 · 147 阅读 · 0 评论 -
12.tf.data模块基本操作
tf.data这个是处理数据用的首先我们导入库1创建数据集1.1一维数据我们现在使用from_tensor_slices把[1,2,3,4,5,6,7]这个列表作为数据集然后我们显示出来看一下我们可以发现这个没有办法直接显示出来,其中的shapes是代表每一个元素的shape,由于我们每一个元素是数字,所以shape是()这个对象是可以遍历的,我们遍历一下我们发现每一个对象都是tf,Tensor类型的我们可以将其转换为numpy类型...原创 2021-09-30 13:33:30 · 264 阅读 · 0 评论 -
11.tf.keras函数式API
1导入库2导入数据并归一化原创 2021-09-30 09:22:23 · 187 阅读 · 0 评论 -
10.Dropout抑制过拟合
目录1过拟合问题2代码实现2.1添加dropout层2.2减少网络容量1过拟合问题我们依然使用之前的神经网络与数据集在训练的过程中,我们可以使用测试集,这样我们不只可以得到训练集的loss与acc,还可以获得测试集的loss与acc加入validation_data后不会对训练的模型有任何的影响loss与acc是训练集的损失与正确度,val_loss与val_acc是测试集的损失与正确度我们看一下训练过程中的key我们把训练集与测...原创 2021-09-29 15:48:48 · 790 阅读 · 0 评论 -
9.网络优化
目录1网络容量2增加网络容量的方法2.1增加神经元2.2增加层3代码实现1网络容量网络容量与网络中可训练参数成正比,参数越多容量越大网络容量越大训练速度越慢,越容易过拟合2增加网络容量的方法2.1增加神经元如果单纯增加神经元对结果的改变并不明显,单层的神经元个数不能太多也不能太小,太小会欠拟合,太多会过拟合2.2增加层增加层会提高网络拟合能力3代码实现我们现在通过代码增加网络容量,还是使用的之前的fashio...原创 2021-09-26 15:48:55 · 249 阅读 · 0 评论