Tensorflow一些代码Trick

本文介绍了TensorFlow中的一些代码技巧,包括图像归一化、矩阵操作和数据处理。内容涉及如何对图像进行行和列填充,使用tf.gfile.FastGFile读取图片,理解tf.train.Coordinator和tf.train.start_queue_runners的作用,以及批处理操作tf.train.batch。此外,还讲解了如何通过tf.tile()、tf.unstack与tf.stack来拆解和拼接矩阵,以及图像归一化到[-1, 1]的方法。" 88993474,7078587,Fabric 1.4 LTS环境搭建与票据应用实战,"['区块链', '超级账本', 'Fabric']

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

# sklearn的train_test_split函数用于将矩阵随机划分为训练子集和测试子集,并返回划分好的训练集测试集样本和训练集测试集标签。
train_x, test_x, train_y, test_y = train_test_split(imgs, labs, test_size=0.05, random_state=random.randint(0, 100))

参数解释:

train_data:被划分的样本特征集

train_target:被划分的样本标签

test_size:如果是浮点数,在0-1之间,表示样本占比;如果是整数的话就是样本的数量

random_state:是随机数的种子。

随机数种子:其实就是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。比如你每次都填1,其他参数一样的情况下你得到的随机数组是一样的。但填0或不填,每次都会不一样。

随机数的产生取决于种子,随机数和种子之间的关系遵从以下两个规则:

种子不同,产生不同的随机数;种子相同,即使实例不同也产生相同的随机数。

图片转换为np.array以后,都要进行归一化,除以255

labs = np.array([[0,1] if lab == my_faces_path else [1,0] for lab in labs])

框架下也封装了tf.app.flags.DEFINE_XXXX()函数用于定义参数,便于命令行形式传递参数。常见的函数形式如下:

flags.DEFINE_float(参数1,参数2,参数3)  
flags.DEFINE_integer(参数1,参数2,参数3)  
flags.DEFINE_string(参数1,参数2,参数3) 
flags.DEFINE_boolean(参数1,参数2,参数3) 
参数1:定义的参数名称;

参数2:参数默认值;

参数3:对参数的描述;
if __name__ == '__main__':
  tf.app.run()  # 他会给主函数返回当前文件地址字符串列表

#  如果你的代码中的入口函数不叫main(),而是一个其他名字的函数,如test(),则你应该这样写入口tf.app.run(test)
#  如果你的代码中的入口函数叫main(),则你就可以把入口写成tf.app.run()
tf.pad 
pad( 
tensor, # 输入数据 
paddings, 
mode=’CONSTANT’, # 可以有其它选项 REFLECT
name=None 
)

paddings , 输入数组(ndarray, tensor, list都行),如四维:
np.array([[0, 0], [3, 3], [3, 3], [0, 0]]) , 每一个[ ] , 表示一个维度,每个数字表示一个方向填充几个0

BatchSize维度不填充,行维度上下填充3行0,列维度左右填充3列0,channel维度不填充

# 中括号list结构,在这之中获取当前文件中文件夹名字,os.listdir()也可已做
  unique_labels = [l.strip() for l in tf.gfile.FastGFile(
      labels_file, 'r').readlines()]
tf.gfile使用:
	1.# 中括号list结构,在这之中获取当前文件中文件夹名字,os.listdir()也可已做,剔除空格: 字符前空格,全部空格,末尾空格:lstrip() , strip() , rstrip()
  	   unique_labels = [l.strip() for l in tf.gfile.FastGFile(labels_file, 'r').readlines()]

	2. matching_files = tf.gfile.Glob(jpeg_file_path)  # 取出指定路径文件夹中一种花列表,完整相对地址字符串列表,根据参数地址

tf.gfile.FastGFile()
tf.gfile.FastGFile(path,decodestyle)
函数功能:实现对图片的读取。
函数参数:(1)path:图片所在路径 (2)decodestyle:图片的解码方式。(‘r’:UTF-8编码; ‘rb’:非UTF-8编码)

import matplotlib.pyplot as plt 
import tensorflow as tf 

#tf.gfileGFile()函数:读取图像  
image_jpg = tf.gfile.FastGFile('dog.jpg','rb').read()  
image_png = tf.gfile.FastGFile('lizard.png','rb').read()  

with tf.Session() as sess:  

    image_jpg = tf.image.decode_jpeg(image_jpg) #图像解码
    print(sess.run(image_jpg))#打印解码后的图像(即为一个三维矩阵[w,h,3])
    image_jpg = tf.image.convert_image_dtype(image_jpg,dtype=tf.uint8) #改变图像数据类型  

    image_png = tf.image.decode_png(image_png) 
    print(sess.run(image_jpg))
    image_png = tf.image.convert_image_dtype(image_png,dtype=tf.uint8)  

    plt.figure(1) #图像显示  
    plt.imshow(image_jpg.eval())  
    plt.figure(2)  
    plt.imshow(image_png.eval())  

或者

 with tf.gfile.FastGFile(filename, 'rb') as f:
    image_data = f.read()  # 把文件读取出来,按照bytes格式,二进制方法读取'rb'

tensorflow中协调器 tf.train.Coordinator 和入队线程启动器 tf.train.start_queue_runners
https://blog.youkuaiyun.com/dcrmg/article/details/79780331
代码TFrecord有
QueueRunner类用来启动tensor的入队线程,可以用来启动多个工作线程同时将多个tensor(训练数据)推送入文件名称队列中,具体执行函数是 tf.train.start_queue_runners , 只有调用 tf.train.start_queue_runners 之后,才会真正把tensor推入内存序列中,供计算单元调用,否则会由于内存序列为空,数据流图会处于一直等待状态。
tf.train.batch 的理解: https://blog.youkuaiyun.com/sinat_29957455/article/details/83152823 总之他可以,队列读取,batch出队,自动填充队头;

inputs = (inputs / 255.0) * 2.0 - 1.0 # 读取图像归一化到【-1,1】

直观的理解tensorflow中的tf.tile()函数

tf.unstack与tf.stack

拆解和拼接矩阵,tensor!

tensorflow中os.environ[“TF_CPP_MIN_LOG_LEVEL”]的值的含义
介绍

在这里插入图片描述

# 避免打印TF调试信息
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值