python神经网络基础(python 神经元网络)

网友投稿 278 2022-08-26


python神经网络基础(python 神经元网络)

神经网络基础

神经网络原理手写数字识别案例

文件读取流程

多线程 + 队列通用文件读取流程

构建文件名队列读取与解码批处理队列

手动开启线程

构建文件名队列

将需要读取的文件名放到文件名队列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 tfimport osos.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 Noneif __name__ == "__main__": filename = os.listdir("./images") file_lists = [os.path.join("./images/",files) for files in filename] images_read(file_lists)


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:浅析SpringBoot自动装配的实现
下一篇:零基础-Python从门到精通(系列)(Python从入门)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~