TensorFlow1深度学习基础(笔记二)
十四、文件读取流程
多线程+队列
第一阶段:构造文件名队列
File_queue=Tf.train.string_input_producer(string_tensor,shuffle=True)
String_tensor:含有文件名+路径的1阶张量
Num_epochs:过几遍数据,默认无限过数据
Return:文件队列
第二阶段:读取与解码
文本文件
读取:Tf.TextLineReader()
解码:tf.decode_csv()
图片文件
读取:tf.WholeFileReader()
解码:tf.image.decode_jpeg(contents)/tf.image.decode_png(contents)
二进制文件
读取:tf.FixedLengthRecordReader(record_bytes)
解码:tf.decode_raw()
TFRecords文件
读取:tf.TFRecordReader()
共同的读取方法:key,value=读取器.read(file_queue)
默认都解码成tf.uint8类型
第三阶段:批处理队列
Tf.train.batch(tensors,batch_size,num_threads=1,capacity=32,name=None)
Tensors:可以是包含张量的列表,批处理的内容放到列表当中
Batch_size:从队列中读取的批处理大小
Num_threads:进入队列的线程数
Capacity:整数,队列中元素的最大数量
Return:tensors
Tf.train.shuffle_batch()
启动运行这些队列操作的线程
Tf.train.QueueRunner()
开启会话:
Tf.train.start_queue_runners(sess=None,coord=None)
Sess:所在的会话
Coord:线程协调器
Tf.train.Coordinator()
Request_stop():请求停止
Should_stop():询问是否结束
十五、神经网络基础
输入层,隐藏层、输出层
感知机==逻辑回归
线性加权=logits=sigmod
神经网络主要用途在于分类
神经网络原理:
损失函数
交叉熵损失
总损失——求平均
最小二乘法——线性回归的损失——均方误差
优化损失函数
Tf.nn.softmax_crose_entropy_with_logits(labels=None,logits=None,name=None)
计算logits和labels之间的交叉损失熵
Labels:标签值
Logits:样本加权之后的值
Return:返回损失值列表
Tf.reduce_mean(input_tensor)
计算张量的尺寸的元素平均值
十六、Mnist手写数字识别
Mnist数据获取API
Mnist手写数字识别
网络设计
全连接层设计
流程
完善模型功能
如何计算准确率
增加变量tensorboard显示
增加模型保存模型
增加模型预测结果输出
完善代码
准确率计算:
(1)比较输出结果最大值所在位置和真实值的的最大所在位置
Tf.equal(Tf.argmax(y_true,1),tf.argmax(y_predict,1)) 一致返回true
- 求平均
十七、卷积神经网络
传统意义上的多层神经网络:输入层、隐藏层、输出层。隐藏层根据需要来定
卷积神经网络CNN:加入有效的特征学习部分,在原来的全连接层前面加入了卷积层和池化层。卷积神经网络出现,使得神经网络层数加深。
输入层
隐藏层
卷积层
激活层
池化层
Pooling layer
subsample
全连接层
输出层
卷积神经网络原理:
结构:
卷积层
作用:通过在原始图像上平移来提取特征
激活层
作用:增加非线性分割能力
池化层
作用:减少学习的参数,降低网络的复杂度(最大池化和平均池化)
全连接层
作用:进行损失计算并输出分类结果
十八、卷积层(convolutional Layer)
卷积核 – filter - 过滤器 – 卷积单元 - 模型参数
四大要素:
个数
大小
步数
零填充的大小
零填充就是在图片像素外围填充一圈值为0的像素
如何计算输出图像的大小:
输入体积大小H1,W1,D1
四个超参数:
Filter数量K
Filter大小F
步长S
零填充大小P
输出体积大小H2,W2,D2
H2=(H1-F+2P)/S+1
W2=(W1-F+2P)/S+1
D2=K
卷积网络API:
Tf.nn.conv2d(input,filter,strides=,padding=,name=None)
Input:输入张量,具有[batch,height,width,channel]类型为float32,64
Filter:指定过滤器的权重数量,[height,width,in_channels,out_channels]
Strides:步长strides=[1,stride,stride,1]
Padding:零填充 “SAME””VALID”
“SAME”:越过边缘取样
“VALID”:不越过边缘取样
总结:
- 掌握filter要素的相关计算公式
- Filter大小:1*1,3*3,5*5
- 每个过滤器会带有若干权重和1个偏置
十九、激活函数
Sigmoid缺点:
- 计算量相当大
- 反向传播,梯度消失
- 输入的值的范围[-6,6]
Relu=max(0,x)
Relu优点:
- 有效解决梯度消失的问题
- 计算速度快
- 图像没有负的像素值
API:tf.nn.relu(features,name=none)
Features:卷积后加上偏置的结果
二十、池化层
最主要的作用是特征提取
Pooling的方法很多,通常采用最大池化:
Max_pollong:取池化窗口的最大值
Avg_polling:取池化窗口的平均值
API:tf.nn.max_pool(value,ksize=,strides=,padding=)
Value:4-D Tensor形状[bath,height,width,channels]
Channels:并不是原始图片的通道数,而是多少filter观察
Ksize:池化窗口大小,[1,ksize,ksize,1]
Strides:步长大小,[1,strides,strides,1]
Padding:”SAME””VALID”,默认使用“SAME”
全连接层(Full Connection)起到分类器的作用
运用公式求解输出图片大小:卷积向下取整,池化向上取整
网络的优化和改进:
初始参数的大小缩小
模型大小参数的缩小
使用改进版SGD算法
对于深度网络使用bath normalization或者droupout层(防止过拟合)
验证码识别流程分析:
- 读取图片数据
- 解析csv文件,将标签值对应
- 将filename和标签值联系起来
- 构建卷积神经网络
- 构造损失函数(sigmoid交叉熵损失 )
- 优化损失
- 计算准确率
- 开启会话开启线程
TensorFlow1深度学习基础(笔记二)相关推荐
- 深度学习基础笔记——激活函数
相关申明及相关参考: 体系学习地址 主要学习笔记地址 激活函数,你真的懂了吗? - 知乎 (zhihu.com) 聊一聊深度学习的activation function - 知乎 (zhihu.com ...
- 深度学习基础笔记——前向传播与反向传播
相关申明及相关参考: 体系学习地址 主要学习笔记地址 由于是文章阅读整合,依据个人情况标注排版, 不确定算不算转载,主要学习围绕AI浩的五万字总结,深度学习基础 如有侵权,请联系删除. 1前向传播与反 ...
- 深度学习基础笔记(MLP+CNN+RNN+Transformer等等)
提示:本人还在学习当中,所作笔记仅供大家参考,若有问题欢迎大家指出! 目录 专业词汇 基础神经网络 感知机 多层感知机MLP 卷积神经网络CNN 激活函数 正则化 最优化方法 生成模型GAN 自然语言 ...
- 深度学习基础(二)激活函数
激活函数(也被称为激励函数)的意义就是加入非线性因素,使得神经网络具有非线性表达的能力.其必要条件是激活函数的输入和输出都是可微的,因为神经网络要求处处可微.(可微是指函数的各个方向可导,可微大于等于 ...
- matlab中的pred,Matlab深度学习基础笔记-2
笔记来源于matlab官网,不足之处还请提出.. 1.4检查预测 Prediction scores 使用classify可以获得所有类别的预测值,存储在数组scrs中: [pred scrs] = ...
- 深度学习基础(二)—— 从多层感知机(MLP)到卷积神经网络(CNN)
经典的多层感知机(Multi-Layer Perceptron)形式上是全连接(fully-connected)的邻接网络(adjacent network). That is, every neur ...
- Python深度学习基础(二)——反向传递概念透彻解析以及Python手动实现
反向传递概念透彻解析以及Python手动实现 前言 最简单的反向传递 乘法层 加法层 激活函数的反向传递 Relu层 Sigmoid层 带交叉熵误差的SoftMax层 前言 我们在感知机中采用了梯度下 ...
- 深度学习入门笔记(二):神经网络基础
欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...
- 深度学习入门笔记系列 ( 二 )——基于 tensorflow 的一些深度学习基础知识
本系列将分为 8 篇 .今天是第二篇 .主要讲讲 TensorFlow 框架的特点和此系列笔记中涉及到的入门概念 . 1.Tensor .Flow .Session .Graphs TensorFlo ...
最新文章
- Jchatting通过Sina SAE云开发平台高级开发者认证
- 【树型DP】BZOJ1564 二叉查找树(noi2009)
- 快速构建Windows 8风格应用31-构建磁贴
- 7-19 谁先倒 (15 分)
- SQL*Plus 系统变量之32 - NEWP[AGE]
- AlphaGo来了,终结者不远了
- ESP32S 数据手册
- 【Java】9、Java IO 流
- 指纹识别综述(5): 分类与检索
- IOS版aplayer使用教程_Google地球 安卓手机版(教程)流畅使用
- 如有需要跟我学习 触摸精灵软件的朋友请加我QQ 811037998 备注来源 CSDN
- 下载全球国家shp数据(公路、铁路、河流等)的网站
- 07.从密码学看进制转化
- 数据压缩原理与应用 WAV文件的分析
- 最小操作数,木块砌墙问题
- 后台java 实现验证码生成
- RF化合物半导体市场规模将在2021年达到110亿美元
- 一文了解RPA「财务机器人」 自动运行,效率+1+1+1……
- 数据库范式4nf什么意思_什么是第一范式(1NF)?
- vCenter的证书过期问题
热门文章
- 微软确认:从4月13日起,Win10系统将强制卸载旧版Edge浏览器
- 第一集 斗罗世界 第八章
- mysql是什么?mysql的特点
- 【数据结构-树】哈夫曼树及其应用
- 利用Service实现简单的音乐播放功能
- 春招旺季提前,北上深杭平均招聘月薪过万
- 洛谷:P1424 小鱼的航程(改进版) JAVA
- 贝尔曼-福特算法(Bellman-Ford)最短路径问题
- 【卷积神经网络】12、激活函数 | Tanh / Sigmoid / ReLU / Leaky ReLU / ELU / SiLU / Mish
- python入门教程慕课网_秒懂系列 | 史上最简单的Python Django入门教程