tensorflow深度学习流程

1、准备样本数据和测试数据:
tensorflow推荐使用二进制的TFRecords格式这样可以支持QueueRunner和Coordinater多线程读取,并且可以通过batch size和epoch参数控制单次训练的batch大小和迭代次数。
2、接受命令行参数
网络参数非常多,优化算法、模型的层数和模型结构都需要不断调整,使用命令行比较方便。
tensorflow采用了python-gflags技术,封装成tf.app.flags接口。
3、定义神经网络模型
定义模型参数可以用tf.Variable()很简单地定义,也可以使用tf.variable_scope()和tf.get_variables()接口。为了保证每个Variable都有独特的名字,而且可以轻易地修改。下面的代码给出了一个可扩展的网络定义。

 def dnn_inference(sparse_ids, sparse_values, is_train=True):
    with tf.variable_scope("input"):
      sparse_layer = sparse_full_connect(
          sparse_ids, sparse_values,
          [input_units, model_network_hidden_units[0]],
          [model_network_hidden_units[0]], is_train)
      layer = tf.nn.relu(sparse_layer)

    for i in range(len(model_network_hidden_units) - 1):
      with tf.variable_scope("layer{}".format(i)):
        layer = full_connect_relu(layer, [
            model_network_hidden_units[i], model_network_hidden_units[i + 1]
        ], [model_network_hidden_units[i + 1]], is_train)

    with tf.variable_scope("output"):
      layer = full_connect(layer,
                           [model_network_hidden_units[-1], output_units],
                           [output_units], is_train)
    return layer

4、使用不同的优化算法
用什么优化器去优化模型参数,对于不同的场景和数据集没有固定的答案。最好的方式就是实践。可以用FLAGS来实现不同的优化器选择。

tensorflow1.2支持的优化算法都在 tf.train模块下:

5、在线学习(Online Learning)和连续学习

tensorflow支持在线学习,利用在线数据不断优化模型。tensorflow可以用tf.train.Saver()配合checkpoint保存模型和恢复模型。这样就可以在训练过程中不断接受在线请求的数据,并实时保存更新模型参数,实现持续不断地学习,甚至是训练被中断时,也可以重新加载上次训练的模型数据,继续优化。

6、使用tensorboard优化参数
tensorboard的机制:
http://www.jianshu.com/p/fed80e24067f

7、分布式Tensorflow的应用
tensorflow支持计算机集群上的计算。这里有一篇教程:
https://segmentfault.com/a/1190000008376957?from=timeline&isappinstalled=1
目前我的工作还不涉及到分布式集群上的应用。留以后再研究。

参考:
http://blog.jobbole.com/105602/
https://segmentfault.com/a/1190000008376957?from=timeline&isappinstalled=1

    原文作者:Alex_lxy
    原文地址: https://www.jianshu.com/p/67917865fc77
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞