tensorflow相关笔记

会话(Session)的作用

  1. 运行图的结构
  2. 分配资源计算
  3. 掌控资源(变量,队列,线程)
    会话运行的过程:
    sess = tf.session sess.run(…) sess.close()
张量的几种属性
gragh 张量所属的默认图
op 张量的操作名
name 张量的字符串描述
shape 张量的形状

静态形状:创建一个张量,初始状态的形状。
tf.Tensor.get_shape() 获取静态形状
tf.Tensor.set_shape() 更新Tensor对象的静态形状,设置之后不能再次设置
对于静态形状来说,不能跨维度修改

动态形状:一种描述原始张量字啊执行过程中的一种形状(动态变化)
tf.reshape: 创建一个具有不同动态形状的新张量
在动态形状改变的时候,需要注意元素数量(个数)要匹配,比如[3, 8] tf.reshape成[5,7]不可以 ,可以改成[4, 6] 或者[2,12]

张量的一些操作
  1. 固定值的张量生成:
    tf.zeros(shape, dtype = tf.float32, name = None)
    创建一个指定形状,且元素值都为0的张量

  2. 创建随机值张量:
    tf.random_normal(shape, mean = 0.0, stddev=1.0, dtype=tf.float32.seed=None, name=None)
    其中mean是平均值stddev是标准差

  3. 张量变换:
    tf.cast(x, dtype, name = None) ,将张量中的数值改变为指定类型

  4. 张量的切片和扩展:
    tf.concat(values,axis, name=‘concat’)
    values为多个张量的列表,比如要合并两个张量a和b, value=[a,b]
    axis=0,表示按行合并,即行数增加, axis=1,表示按列合并,即列数增加

  5. 矩阵的乘法:tf.matmul(x,w)
    矩阵平方:tf.square(error)
    求均值:tf.reduce_mean(error)

所有对变量op的操作都要在会话中初始化且运行

with tf.Session as sess:
		sess.run(op名称)

变量op是可以持久化保存的,而普通张量不行

使用tensorboard生成模型结构图
  1. 将事件文件写入到指定目录
    tf.summary.fileWriter(“文件的目录”,gragh=图的描述符(指向图的一个变量op))
  2. tensorboard --lodir “/path/to/your/events/”
  3. 浏览器打开127.0.0.1:6006
定义模型并训练的过程
  1. 准别好特征和目标值(数据)
  2. 建立模型
  3. 定义损失函数
  4. 梯度下降优化损失(loss)过程,在tf已有的api中指定学习率即可
    梯度下降API:
    tf.train.GradientDescentOptimizer(learning_rate)
    梯度下降优化
    learning_rate:学习率
    method:
    return:梯度下降op

模型的参数必须要使用变量进行初始化(tf.variable)
********************
if name == main:
方法名
即运行主函数

********************

模型的保存与加载

tf.train.Saver(var_list=None,max_to_keep=5)

**var_list:**指定将要保存和还原的变量。它可以作为一个
dict或一个列表传递.
**max_to_keep:**指示要保留的最近检查点文件的最大数量。
创建新文件时,会删除较旧的文件。如果无或0,则保留所有
检查点文件。默认为5(即保留最新的5个检查点文件。)
例如:

saver.save(sess, '/tmp/ckpt/test/model')
saver.restore(sess, '/tmp/ckpt/test/model')

保存文件格式:checkpoint文件

保存模型的代码实现过程:
  1. 在会话前面定义一个模型保存器:
    saver = tf.train.Saver()
  2. 然后在会话中的程序想要保存模型的位置,增加下面的代码:
    saver.save(sess, “/你想/保存/模型文件/的路径/”)
    随后会生成相应的模型文件
加载模型的代码实现过程
  1. 在会话中,判断指定路径是否有模型,如果有就执行下列代码:
    saver.restore(sess, “/模型保存的/路径/”)
    其中saver是之前的定义的模型保存器

自定义命令行参数(比较重要)

需要在方法外部进行定义

  1. 定义命令行参数,即有哪些参数需要在运行时候进行指定
    tf.app.flags.DEFINE_integer(“参数名称”,默认值, “说明” )

  2. 然后定义获取命令行参数的名字
    flags = tf.app.flags.FLAGS
    其中flags是自己指定的,用于接收参数

  3. 然后在会话中,将指定的参数使用flags.参数名称进行替换

  4. 最后在命令行执行该pyhon文件的时候,使用–参数名=值,来指定参数数值即可运行。
    e.g:

     FLAGS = tf.app.DEFINE_integer("is_train", 1, "指定程序训练还是预测")
     在运行该程序时:	python model.py --is_train=0
     即手动给is_train参数传值
    
文件读取
  1. 通过API构造一个文件队列

  2. 构造文件阅读器,读取队列内容,并解码
    对于不同文件有不同的读取方式:
    1. csv文件:读取一行,
    2. 二进制文件:指定一个样本的bytes读取;
    3. 图片文件:一张一张读取

  3. 批处理

一些文件处理的API:

  1. 文件读取API—文件队列构造:

     tf.train.string_input_producer(string_tensor, shuffle=True)
     将输出字符串(例如文件名)输入到管道队列
     string_tensor	含有文件名的1阶张量
     num_epochs:过几遍数据,默认无限过数据
     return:具有输出字符串的队列
    
图片批处理流程:
  1. 构造图片文件队列
  2. 构造图片阅读器
  3. 读取图片数据
  4. 处理图片数据
图片基本操作API
  1. 重置图片尺寸:

    tf.image.resize_images(images, size)

images:4-D形状[batch, height, width, channels]或3-D形状的张
量[height, width, channels]的图片数据
size:1-D int32张量:new_height, new_width,图像的新尺寸
2. 图像读取器

tf.WholeFileReader

将文件的全部内容作为值输出的读取器
return:读取器实例
read(file_queue):输出将是一个文件名(key)和该文件的内容(值)

  1. 解码器

    tf.image.decode_jpeg(contents)
    将JPEG编码的图像解码为uint8张量
    return:uint8张量,3-D形状[height, width, channels]

    tf.image.decode_png(contents)
    将PNG编码的图像解码为uint8或uint16张量
    return:张量类型,3-D形状[height, width, channels]

  2. 定义数据占位符

  3. 建立模型

  4. 计算损失

  5. 梯度下降优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值