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

    1. 求平均

十七、卷积神经网络

传统意义上的多层神经网络:输入层、隐藏层、输出层。隐藏层根据需要来定

卷积神经网络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”:不越过边缘取样

总结:

  1. 掌握filter要素的相关计算公式
  2. Filter大小:1*1,3*3,5*5
  3. 每个过滤器会带有若干权重和1个偏置

十九、激活函数

Sigmoid缺点:

  1. 计算量相当大
  2. 反向传播,梯度消失
  3. 输入的值的范围[-6,6]

Relu=max(0,x)

Relu优点:

  1. 有效解决梯度消失的问题
  2. 计算速度快
  3. 图像没有负的像素值

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层(防止过拟合)

验证码识别流程分析:

  1. 读取图片数据
  2. 解析csv文件,将标签值对应
  3. 将filename和标签值联系起来
  4. 构建卷积神经网络
  5. 构造损失函数(sigmoid交叉熵损失                                  )
  6. 优化损失
  7. 计算准确率
  8. 开启会话开启线程
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值