java中的接口是类吗
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~