TensorFlow学习日记39

1.global_step=tf.Variable(0, trainable=False)
解析:tf.train.get_global_step()方法返回的是的global_step作为name的tensor。它表全局步数,比如在多少步该进行什么操作,现在神经网络训练到多少轮等,常用于滑动平均、优化器、指数衰减学习率等方面。
说明:损失函数优化器的minimize()中global_step=global_steps能够提供global_step自动加一的操作。

2.TF-Slim模块
解析:
[1]TF-Slim是TensorFlow中一个用来构建、训练、评估复杂模型的轻量化库。TF-Slim模块可以和TensorFlow中其它API混合使用。
[2]导入方式:import tensorflow.contrib.slim as slim。
[3]Slim作为1.x时代一个比较常用的高级封装模块,2.x时代主推Keras这样的高级封装模块。

3.Slim模块组成
解析:
[1]arg_scope:允许用户对该scope内的操作定义默认参数。
[2]data:包含了Slim模块的dataset definition、data providers、parallel_reader及decoding utilities。
[3]evaluation:评估模型需要的一些东西。
[4]layers:构建模型需要的一些高级layers。
[5]learning:训练模型需要的一些东西。
[6]losses:常见的loss函数。
[7]metrics:常见的评估指标。
[8]nets:常见的深度网络[例如VGG、AlexNet]。注意:最新的Slim中已经没有nets了。
[9]queues:提供一个容易、简单的开始和关闭QueueRunners的content manager。
[10]regularizers:常见的权重regularizer。
[11]variables:provides convenience wrappers for variable creation and manipulation.

4.arg_scope
解析:能够在保证每一层使用相同参数值的同时简化代码。arg_scope(list_ops_or_scope, **kwargs)这个函数的作用是给list_ops中的内容设置默认值。

5.default_graph = tf.get_default_graph()
解析:获得默认的数据流图的句柄。

6.session
解析:先在默认图中定义操作节点,然后生成一个session,在session中执行初始化以及执行图的流式操作。

import tensorflow as tf
import numpy as np
a=tf.constant([[1,2],[3,5]])
b=tf.constant([[1,2],[3,4]])
c=tf.add(a,b)
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(c))
    d=tf.matmul(a,b)
    print(sess.run(d))

7.graph和session间的关系
解析:
[1]一个graph可以供多个session使用,而一个session不一定需要使用graph的全部,可以只使用其中的一部分。
[2]graph定义了计算方式,是一些加减乘除等运算的组合。它本身不会进行任何计算,也不保存任何中间计算结果。
[3]session类似于一个执行者,给graph灌入输入数据,得到输出,并保存中间的计算结果。同时它也给graph分配计算资源[如内存、显卡等]。

8.tf.pad
解析: tf.pad( tensor,paddings, mode=‘CONSTANT’,name=None),如下所示:
[1]mode=“CONSTANT”:填充0
[2]mode=“REFLECT”:映射填充,上下[1维]填充顺序和paddings是相反的,左右[0维]顺序补齐
[3]mode=“SYMMETRIC”:对称填充,上下[1维]填充顺序是和paddings相同的,左右[0维]对称补齐
二维填充例子如下所示:

t=[[2,3,4],[5,6,7]]
print(tf.pad(t,[[1,2],[1,2]],"CONSTANT")))
[[0, 0, 0, 0, 0, 0],
 [0, 2, 3, 4, 0, 0],
 [0, 5, 6, 7, 0, 0],
 [0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0]]

9.tf.concat与tf.stack
解析:tf.concat与tf.stack这两个函数作用类似,都是在某个维度上对矩阵[向量]进行拼接,不同点在于前者拼接后的矩阵维度不变,后者则会增加一个维度。如下所示:

import tensorflow as tf
a = tf.constant([[1,2,3],[4,5,6]])
b = tf.constant([[7,8,9],[10,11,12]])
ab1 = tf.concat([a,b],axis=0)
ab2 = tf.stack([a,b], axis=0)
sess = tf.Session()
print(sess.run(ab1))
print(sess.run(ab2))
print(sess.run(ab1).shape)
print(sess.run(ab2).shape)
输出:
#ab1
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
#ab2
[[[ 1  2  3]
  [ 4  5  6]]
 [[ 7  8  9]
  [10 11 12]]]
(4, 3)
(2, 2, 3)

10.tf.clip_by_value(V, min, max)
解析:截取V使之在min和max之间。如下所示:

import tensorflow as tf
import numpy as np
v = tf.constant([[1.0, 2.0, 4.0],[4.0, 5.0, 6.0]])
result = tf.clip_by_value(v, 2.5, 4.5)
with tf.Session() as sess:
    print(sess.run(result))
输出结果,如下所示:
[[ 2.5  2.5  4. ]
 [ 4.   4.5  4.5]]

说明:把V中的每一个元素的值都压缩在min和max之间,小于min的让它等于min,大于max的元素的值等于max。

11.tf.losses.add_loss函数
解析:将外部定义的loss添加到losses的集合中,如下所示:

tf.losses.add_loss(
    loss,
    loss_collection=tf.GraphKeys.LOSSES
)

[1]loss:一个表示loss的Tensor
[2]loss_collection:一个可选的集合以添加loss

12.常见tf.GraphKeys
解析:tf.GraphKeys包含所有graph collection中的标准集合名。如下所示:
[1]GLOBAL_VARIABLES:该collection默认加入所有的Variable对象,并且在分布式环境中共享。一般来说,TRAINABLE_VARIABLES包含在MODEL_VARIABLES中,MODEL_VARIABLES包含在GLOBAL_VARIABLES中。
[2]LOCAL_VARIABLES:与GLOBAL_VARIABLES不同的是,它只包含本机器上的Variable,即不能在分布式环境中共享。
[3]MODEL_VARIABLES:顾名思义,模型中的变量,在构建模型中,所有用于正向传递的Variable都将添加到这里。
[4]TRAINALBEL_VARIABLES:所有用于反向传递的Variable,即可训练[可以被optimizer优化,进行参数更新]的变量。
[5]SUMMARIES:跟Tensorboard相关,这里的Variable都由tf.summary建立并将用于可视化。
[6]QUEUE_RUNNERS:the QueueRunner objects that are used to produce input for a computation.
[7]MOVING_AVERAGE_VARIABLES:the subset of Variable objects that will also keep moving averages.
[8]REGULARIZATION_LOSSES:regularization losses collected during graph construction.

13.TensorFlow assert和布尔值检查函数
解析:
[1]tf.assert_negative
[2]tf.assert_positive
[3]tf.assert_proper_iterable
[4]tf.assert_non_negative
[5]tf.assert_non_positive
[6]tf.assert_equal
[7]tf.assert_integer
[8]tf.assert_less
[9]tf.assert_less_equal
[10]tf.assert_greater
[11]tf.assert_greater_equal
[12]tf.assert_rank
[13]tf.assert_rank_at_least
[14]tf.assert_type
[15]tf.is_non_decreasing
[16]tf.is_numeric_tensor
[17]tf.is_strictly_increasing

14.TensorFlow数据IO
解析:
[1]tf.python_io.TFRecordWriter
[2]tf.python_io.tf_record_iterator
[3]tf.python_io.TFRecordCompressionType
[4]tf.python_io.TFRecordOptions

15.TensorFlow使用FFmpeg
解析:TensorFlow提供使用FFmpeg库解码和编码音频文件的操作:

from tensorflow contrib import ffmpeg
audio_binary = tf.read_file (' song.mp3 ' ) 
waveform = ffmpeg.decode_audio (audio_binary , file_format = 'mp3' , samples_per_second = 44100 , channel_count = 2 ) 
uncompressed_binary = ffmpeg .encode_audio (waveform , file_format = 'wav' , samples_per_second = 44100 )

16.TensorFlow会话管理
解析:
[1]tf.Session
[2]tf.InteractiveSession
[3]tf.get_default_session

17.将数据导入TensorFlow
解析:
[1]Feeding:Python的代码在运行每个步骤时提供数据。
[2]从文件读取:输入管道从TensorFlow图的开始处读取文件中的数据。
[3]预加载数据:TensorFlow图中的常量或变量保存所有数据[对于小型数据集]。

18.TensorFlow正则化
解析:正则化可以帮助防止过度配合。损失通常被添加到tf.GraphKeys.REGULARIZATION_LOSSES。
[1]tf.contrib.layers.apply_regularization
[2]tf.contrib.layers.l1_regularizer
[3]tf.contrib.layers.l2_regularizer
[4]tf.contrib.layers.sum_regularizer

19.TensorFlow初始化
解析:用于初始化具有明确值的变量,给出其大小、数据类型等。
[1]tf.contrib.layers.xavier_initializer
[2]tf.contrib.layers.xavier_initializer_conv2d
[3]tf.contrib.layers.variance_scaling_initializer

20.tf.gfile模块[类]
[1]class FastGFile:没有线程锁定的文件I/O包装器
[2]class GFile:没有线程锁定的文件I/O包装器
[3]class Open:没有线程锁定的文件I/O包装器

21.tf.gfile模块[函数]
解析:
[1]Copy(…):将数据从旧路径复制到新路径
[2]DeleteRecursively(…):以递归方式删除目录名称下的所有内容
[3]Exists(…):确定路径是否存在
[4]Glob(…):返回与给定模式匹配的文件列表
[5]IsDirectory(…):返回路径是否是目录
[6]ListDirectory(…):返回目录中包含的条目列表
[7]MakeDirs(…):创建目录和所有父/中间目录
[8]MkDir(…):创建名为dirname的目录
[9]Remove(…):删除位于文件名的文件
[10]Rename(…):重命名或移动文件/目录
[11]Stat(…):返回给定路径的文件统计信息
[12]Walk(…):目录的递归目录树生成器

22.tf.python_io模块
解析:Python函数用于直接操作TFRecord格式的文件。
[1]class TFRecordCompressionType:记录的压缩类型。
[2]class TFRecordOptions:用于操作TFRecord文件的选项。
[3]class TFRecordWriter:将记录写入TFRecords文件的类。
[4]tf_record_iterator(…):从TFRecords文件读取记录的迭代器。

23.tf.lite模块
解析:
[1]constants module:tf.lite.constants命名空间的公共API。
[2]class Interpreter:TF-Lite模型的解释器推理。
[3]class OpHint:一个帮助构建tflite函数调用的类。
[4]class OpsSet:Enum类定义可用于生成TFLite模型的操作集。
[5]class TFLiteConverter:使用TOCO将TensorFlow模型转换为output_format。
[6]class TocoConverter:使用TOCO将TensorFlow模型转换为output_format。
[7]toco_convert(…):使用TOCO转换模型。[该函数已经废弃]

24.tf.queue模块
解析:
[1]tf.QueueBase:队列实现的基类。
[2]tf.queue.PriorityQueue:优先队列。

25.tf.zeta函数
解析:tf.zeta(x, q, name=None),函数参数如下所示:
[1]x:一个Tensor,它必须是以下类型之一float32、float64。
[2]q:一个Tensor,它必须与x具有相同的类型。
[3]name:操作的名称[可选]。
说明:tf.zeta函数返回一个与参数x具有相同类型的Tensor。

参考文献:
[1]TensorFlow-Slim API官方教程:https://blog.csdn.net/wanttifa/article/details/90208398
[2]TensorFlow官方文档:https://www.w3cschool.cn/tensorflow_python/

你可能感兴趣的:(深度学习)