deep_learning day02

本文介绍TensorFlow中的文件读取流程,包括CSV、图片和二进制文件的处理方式,以及TFRecords文件的特性和使用方法。同时,深入浅出地讲解了神经网络的基本概念,如ANN结构、工作原理及其在多分类问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • TensorFlow 文件读取流程

    • 文件名列表 文件名队列 (CSV(默认只读一行)、图片文件(一次只读一个样本)、二进制文件(指定一个样本bytes读取))

    • 对文件名队列,进行出队实例,实行内容解码

      1. 构造好一个路径 + 文件名的队列

      2. 进行文件名队列的读取

      3. 进行解码操作

      4. 放到样本队列中,进行处理

    • 图片三要素 如何将图片转换成一个向量

      • 图片长度、宽度、图片通道

      • 像素点:灰度值 0~255;RGB(红, 绿, 蓝)

    • 图片张量表示

      • 灰度图、彩色图

      • 高、宽、(单通道、三通道)

      • 3D:[height, width, channel]

      • 4D:[batch, height, width, channel]

      • 读取步骤

        1. 构建图片文件队列

        2. 读取图片数据,并进行解码 tf.WholeFileReader() read

        3. 处理图片数据形状,批处理返回,tf.image.resize_images, set_shape

        4. 形状必须固定之后才能进行,tf.train.batch

        5. 打印内容,运行:需要开启子线程去运行,子线程就去把数据读取到队列,主线程取出数据去训练

      • 数据类型:

        • 运算的时候:需要float32类型

        • 读取出来的解码的类型:uint8格式

    • 二进制数据的读取(指定bytes:一个样本的)

      • 构造二进制文件队列

      • 读取二进制数据并进行解码 tf.FixedLengthRecordReader(self.all_bytes) tf.decode_raw(value, tf.uint8)

      • 分割目标值和特征值 tf.slice

      • 形状类型改变 tf.cast

        • reshape (3072, )----[channel, height, width]

        • (3072, ) —>(1024R, 1024G, 1204B)transpose [channel, height, width] --->[height, width, channel]

      • 批处理

    • TFRecords文件的特点

      • 特点:是一种二进制文件,虽然它不如其他格式好理解,但是它能更好的利用内存,更方便复制和移动,并且不需要单独的标签文件

      • Example:方便存储更多的图片的信息,特征值、目标值、通道等等,不需要更多去处理读取出来的结果

      • 方便存储更多的图片信息,特征值、目标值、通道等等

    • 存储与读取TFRecords文件

      • 存储:

        • API:tf.python_io.TFRecordWriter("./tmp/cifar.tfrecords")

        • 循环将数据构造Example协议内存块(protocol buffer)序列化之后写入文件

        • 构造example:tf.train.Int64List(value=[Value]),tf.train.BytesList(value=[Bytes]),tf.train.FloatList(value=[value]) ,byets需要序列

        • example = tf.train.Example(features=tf.train.Features(feature={ "image": tf.train.Feature(bytes_list=tf.train.BytesList(value=[image])), "label": tf.train.Feature(int64_list=tf.train.Int64List(value=[label])),}))

      • 读取:

        • 通过文件读取流程

        • 在读取内容之后需要增加一个解析example协议的步骤

        • feature = tf.parse_single_example(values, features={ "image": tf.FixedLenFeature([], tf.string), "label": tf.FixedLenFeature([], tf.int64)})

    • 神经网络 ANN

      • 输入层、输出层、隐藏层

        • 特点:

          • 每个连接都有权值

          • 同一层神经元之间没有连接

          • 最后的输出结果对应的层也称之为全连接层

      • 神经元也称之为感知机:这个感知机具有连接的权重和偏置,有一个sign:阶跃函数,输出0或者1

      • 神经网络:多个神经元(感知机)组成

    • 神经网络原理:神经网络解决多分类问题最常用的方法是设置n个输出节点,其中n为类别的个数。

      • 最后怎么分成哪几个类别:神经网络输出转换成概率的结果:softmax回归

      • 交叉熵损失:目标值one_hot编码,预测值:概率分布,所有概率加起来为1;提高对应目标值为1的位置输出概率的大小,减小其他位置的概率

      • 信息熵:所有概率相等,最不确定,值是最大的

      • 损失

        • 线性回归:均方误差

        • 逻辑回归:对数似然

        • 神经网络:交叉熵损失

      • 优化

        • BP算法:

          • 会随机初始化每条连接线权重和偏置

          • 从后往前:逆向反馈更新神经网络中每条连接线的权重和每层的偏置

          • 梯度下降+链式求导规则

    • Mnist手写数字识别

      • 官网

      • 把模型、训练定义好

        1. mnist 获取数据,特征值[None, 784] 目标值[None, 10]

        2. 建立神经网络

          • 权重:[784, 10] 偏置:[10] 每个样本的10个神经元输出结果

        3. softmax、交叉熵损失计算

        4. 梯度下降优化

      • 增加功能

        • 计算准确率:求出每个样本是否相等的一个列表

          • equal_list = tf.equal(tf.argmax(y_true, 1), tf.argmax(y_predict, 1))

          • 计算相等的样本的比例 accuracy = tf.reduce_mean(tf.cast(equal_list, tf.float32))

        • 添加tensorboard变量观察

          • 建立时间文件

          • 收集张量值、合并张量值

          • 运行合并的OP

          • 写入文件(每批次的结果)

        • 增加模型预测功能:输入预测数据,模型得出结果,进行处理看预测的类别是多少

        • Python 进行预测

          # 预测100个样本
          foriinrange(100):
          # label [1, 10]
          image, label= mnist.test.next_batch(1)
          # 直接运行网络的输出预测结果
          print("第 %d 样本,真实的图片数字为:%d, 神经网络预测的数字为:%d "%(
            i,
            tf.argmax(label, 1).eval(),
            tf.argmax(sess.run(y_predict, feed_dict={x: image, y_true: label}), 1).eval()
            ))
        • 线性神经网络局限性

          • 任意多个隐层的神经网络单层的神经网络都没有区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值