Tensowflow深度学习流程基本按照这8个步骤来执行的:
深度学习流程
一、执行图的构建
1.数据的特征工程
2.模型构建
二、执行图的执行
1.数据加载
2.数据清洗
3.数据划分、提取
4.模型训练
5.模型效果评估
6.模型持久化
三、TF的常识
1.变量的初始化
2.常量的定义、参数的给定、推荐默认的类型、系统自动命名、不同图中的节点不能合并操作
def constant(value, dtype=None, shape=None, name="Const", verify_shape=False):
功能:定义一个值不允许修改的Tensor常量对象
参数:
value: 初始值,可以是任意的Python基本数据类型(数值型、布尔类型、字符串类型、数组、元祖)以及NumPy数组类型
dtype: 明确给定常量对象的数据类型,如果不给定的话,从value中获取数据类型
shape: 给定常量对象的形状,默认不给定的话,使用value对应的形状
四、TF会话
当执行图构建完成后,才能给启动图,进入到执行阶段:
- 启动图的第一步就是创建一个Session对象,
- 如果无任何参数的情况下,会话构造器将启动默认图。
- 执行会话(session),获取结果
def create_graph_session():
a = tf.constant(value=5.0)
b = tf.constant(value=8.0)
# 2. 两个常数tensor对象分别加一个随机数
v1 = tf.add(x=a, y=np.random.random_sample(), name='v1')
v2 = tf.add(x=b, y=tf.random_normal(shape=[], dtype=tf.float32))
# def __init__(self, target='', graph=None, config=None)
# target: 一个字符串,先暂时不考虑
# graph: 指定这个会话可以运行哪个图的内容,如果不给定的时候,默认就是tf.get_default_graph()
# config: session相关配置信息,可以不给
sess = tf.Session()
"""
def run(self, fetches, feed_dict=None, options=None, run_metadata=None):
tf.Session().run 的参数:
fetches : 给定具体获取哪些tensor的值,可以是1个 也可以是多个,给定多个tensor值,只运行一次;
feed_dict : 如果定义的执行图需要传入数据,那么通过这个参数给定。
"""
print(sess.run(fetches=a))
# fetches 参数可以写,也可以不写
print("当前的默认会话:{}".format(tf.get_default_session()))
# print(sess.run(a))
# """
# 如何一次性获取运算结果呢?想要获取的结果 组合成一个list,作为fetches.
# """
print(sess.run([a, b, v1, v2]))
# print(v1.eval())
# 关闭会话
sess.close()
总结:实际写训练代码的时候一般结构为:
# 构建模型图
# 构建会话
# with tf.Graph().as_default():
# # 一、 基于业务知识构建执行图对象
# pass
#
# # # 二、运行
# with tf.Session() as sess:
# # # 0. 加载数据
# #
# # # 1. 图执行
# #
# # # 2. 图效果查看
# #
# # # 3. 持久化
# pass
# # pass
config配置
- 构建会话
#介绍session中的参数config=tf.ConfigProto()
with tf.Session(config=tf.ConfigProto(log_device_placement=True,
allow_soft_placement=True,
gpu_options=tf.GPUOptions(allow_growth=True,
per_process_gpu_memory_fraction=0.5))) as sess:
a_, b_, v1_, v2_ = sess.run([a, b, v1, v2])
print(a_, b_, v1_, v2_)
gpu_options GPU相关参数
log_device_placement bool值 是否打印设备位置得日志文件
allow_soft_placement bool==True时,是否允许动态使用CPU和GPU,默认为False;当我们的tf的版本为GPU的时候,
建议该参数设置为True,因为TensorFlow中的部分op只能在CPU上运行
allow_growth bool值==True时,不预先分配使用整个gpu内存计算,而是从小开始按需要增长。
per_process_gpu_memory_fraction 值介于(0 ,1.0) 限制使用该gpu设备内存的百分比。