深度学习及TensorFlow简介
\\深度学习目前已经被应用到图像识别,语音识别,自然语言处理,机器翻译等场景并取得了很好的行业应用效果。至今已有数种深度学习框架,如TensorFlow、Caffe、Theano、Torch、MXNet,这些框架都能够支持深度神经网络、卷积神经网络、深度信念网络和递归神经网络等模型。TensorFlow最初由Google Brain团队的研究员和工程师研发,目前已成为GitHub上最受欢迎的机器学习项目。
\\TensorFlow开源一周年以来,已有500+contributors,以及11000+个commits。目前采用TensorFlow平台,在生产环境下进行深度学习的公司有ARM、Google、UBER、DeepMind、京东等公司。目前谷歌已把TensorFlow应用到很多内部项目,如谷歌语音识别,GMail,谷歌图片搜索等。TensorFlow主要特性有:
\\使用灵活:TensorFlow是一个灵活的神经网络学习平台,采用图计算模型,支持High-Level的API,支持Python、C++、Go、Java接口。
\\跨平台:TensorFlow支持CPU和GPU的运算,支持台式机、服务器、移动平台的计算。并从r0.12版本支持Windows平台。
\\产品化:TensorFlow支持从研究团队快速迁移学习模型到生产团队。实现了研究团队发布模型,生产团队验证模型,构建起了模型研究到生产实践的桥梁。
\\高性能:TensorFlow中采用了多线程,队列技术以及分布式训练模型,实现了在多CPU、多GPU的环境下分布式训练模型。
\\本文主要介绍TensorFlow一些关键技术的使用实践,包括TensorFlow变量、TensorFlow应用架构、TensorFlow可视化技术、GPU使用,以及HDFS集成使用。
\\TensorFlow变量
\\TensorFlow中的变量在使用前需要被初始化,在模型训练中或训练完成后可以保存或恢复这些变量值。下面介绍如何创建变量,初始化变量,保存变量,恢复变量以及共享变量。
\\\#创建模型的权重及偏置\\weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35), name=\"weights\")\\biases = tf.Variable(tf.zeros([200]), name=\"biases\")\\\\#指定变量所在设备为CPU:0\\with tf.device(\"/cpu:0\"):\\ v = tf.Variable(...)\\\\#初始化模型变量\\init_op = tf.global_variables_initializer()\\sess=tf.Session()\\sess.run(init_op)\\\\#保存模型变量,由三个文件组成model.data,model.index,model.meta\\saver = tf.train.Saver()\\saver.restore(sess, \"/tmp/model\")\\\\#恢复模型变量\\saver.restore(sess, \"/tmp/model\")
\\在复杂的深度学习模型中,存在大量的模型变量,并且期望能够一次性地初始化这些变量。TensorFlow提供了tf.variable_scope和tf.get_variable两个API,实现了共享模型变量。tf.get_variable(\u0026lt;name\u0026gt;, \u0026lt;shape\u0026gt;, \u0026lt;initializer\u0026gt;):表示创建或返回指定名称的模型变量,其中name表示变量名称,shape表示变量的维度信息,initializer表示变量的初始化方法。tf.variable_scope(\u0026lt;scope_name\u0026gt;):表示变量所在的命名空间,其中scope_name表示命名空间的名称。共享模型变量使用示例如下:
\\\#定义卷积神经网络运算规则,其中weights和biases为共享变量\\def conv_relu(input, kernel_shape, bias_shape):\\ # 创建变量\"weights\".\\ weights = tf.get_variable(\"weights\