当前位置 : 主页 > 编程语言 > python >

python神经网络基础

来源:互联网 收集:自由互联 发布时间:2022-06-30
神经网络基础 神经网络原理 手写数字识别案例 文件读取流程 多线程 + 队列 通用文件读取流程 构建文件名队列 读取与解码 批处理队列 手动开启线程 构建文件名队列 将需要读取的文
  • 神经网络基础
  • 神经网络原理
  • 手写数字识别案例
    • 文件读取流程
    • 多线程 + 队列
    • 通用文件读取流程
  • 构建文件名队列
  • 读取与解码
  • 批处理队列
    • 手动开启线程
  • 构建文件名队列
    • 将需要读取的文件名放到文件名队列
    • tf.train.string_input_producer(string_tensor,shuffle=true)
    • string_tensor:文件名+路径的一阶张量
    • num_epochs:过几遍数据,默认路径无线过数据
    • return:文件队列

  • 读取与解码
    • 从队列中读取文件内容,并进行解码
    • tf.TextLineReder
    • 阅读文本文件逗号分隔(CSV)格式,默认按行读取
    • return:返回读取器实例
    • 解码:tf.decode_csv:解码文件内容
    • tf.WholeFileReader
    • 读取图片文件
    • return:读取器实例
    • 解码1:tf.image.decode_jpg(contents)(将JPEG编码的图像解码为uint8张量)
    • return:uint8张量,3-D形状[height,width,channels]
    • 解码2:tf.image.decode_png(contents)(将png编码的图像解码成uint8张量)
    • return:张量类型,3-D形状[height,width,channels]

    • tf.FixedLengthRecordReader(record_bytes)
    • 读取二进制文件,记录固定数量字节的二进制文件
    • record_bytes:整型,指定每次读取(一个样本)的字节数
    • return:阅读器实例
    • 解码:td.decode_raw:解码二进制文件
    • 与tf.FixedLengthRecordReader搭配使用,二进制读取为uint8类型,tf.cast()可以类型转换

    • tf.TFReocrdReader
    • 读取TFRecords文件
    • return:读取器实例
    • 它们有共同的读取方法:读取器.read(file_queue),并且返回一个Tensors元组(key文件名、value默认的内容(一个样本))
    • 进行批处理需要使用tf.train.batch或tf.train.shuffle_batch进行批处理操作,便于指定每批读多个样本的训练

  • 批处理
    • tf.train.batch(tensor,batch_size,num_threads=1,capacity=32,name=None)
    • 读取指定大小(个数)的张量
    • tensor:可以时包含张量的列表,批处理的内容放到列表的当中
    • batch_size:从队列中读取的批处理大小
    • num_threads:进入队列的线程数
    • capacity:整数,队列中元素的最大数量
    • return:tensor
    • tf.train.shuffle_batch

    3.1.2线程操作

    以上队列都是tf.QueueRunner对象,每个QueueRunner都负责一个阶段,tf.train.start_queue_runners函数要求在图中的每个QueueRunner启动它的运行队列操作的进程(在会话中开启)

    • tf.train.start_queue_runners(sess=None,coord=None)
    • sess:所在会话
    • coord:线程协调器
    • return:返回所有线程
    • tf.train.Coordinator()
    • 线程协调员,对线程进行管理和协调
    • request_stop():请求停止
    • should_stop():询问是否结束
    • join(threads=None,stop_grace_period_secs=120):回收线程
    • return:线程协调员实列


    图像基本知识

    • 特征抽取:
      文本 - 数值(二维数组shape(n_sample,m_features))
      字典 - 数值(二维数组shape(n_sample,m_features))
      图片 - 数值(三位数组shape(图片长度、图片宽度、图片通道数))
    • 图片三要素:
    • 灰度图[长,宽,1]
    • 每一个像素点[0,255]的一个数
    • 彩色图片[长,宽,3]
    • 每一个像素点用3个[0,255]的数表示
    • 张量形状
      Tensor(指令名称,shape,dtype)
    • 一张图片shape=(height,width,channels)
    • 多张图片shape=(batch,height,width,channels)在一张图片的基础上加上多少个
    • 图片特征值处理
    • 缩放到统一大小,每个特征数量保持相同,所以需要将所有图片的张量大小统一转换,减少计算开销
    • tf.image.rasize_images(images,size)
    • 缩小放大图片
    • images:4-D形状[batch,height、width、channels]或3-D的张量[height、width、channels]的图片数据
    • size:1-D int32张量:new_height,new_width,图像尺寸
    • 返回4-D格式或3-D格式图片

    数据存储

    • 存储:uint8(节约空间)
    • 矩阵计算:float32(提高精度)

    图片读取案例

    import tensorflow as tf
    import os
    os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

    def images_read(file_lists):
    """
    读取dog图片
    """
    # 1.构建文件名队列
    file_queue = tf.train.string_input_producer(file_lists)
    # 2.读取与解码
    #读取器,读取阶段
    reader = tf.WholeFileReader()
    #key文件名,value一张图片原始编码格式
    key, value = reader.read(file_queue)
    image = tf.image.decode_jpeg(value)
    #修改尺寸,必须确定形状
    image_resized = tf.image.resize_images(image, [200, 200])
    image_resized.set_shape(shape=[200, 200, 3])
    print(image_resized)
    # 3.批处理capacity队列容量
    image_batch = tf.train.batch([image_resized], batch_size=70, num_threads=1, capacity=70)
    with tf.Session() as sess:
    #开启线程,不开线程将直接阻塞
    #线程协调员
    coords = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(sess=sess, coord=coords)
    new_key, new_value, new_image, new_image_resized, new_image_batch= sess.run([key, value, image, image_resized, image_batch])
    print(new_image)
    print(new_image_resized)
    print(new_image_batch)

    #回收线程
    coords.request_stop()
    coords.join(threads)
    return None
    if __name__ == "__main__":
    filename = os.listdir("./images")
    file_lists = [os.path.join("./images/",files) for files in filename]
    images_read(file_lists)
    上一篇:python tensorflow框架
    下一篇:没有了
    网友评论