TensorFlow学习笔记(1)--TensorFlow简介,常用基本操作
要将深度学习更快且更便捷地应用于新的问题中,选择一款深度学习工具是必不可少的步骤。
TensorFlow是谷歌于2015年11月9日正式开源的计算框架。TensorFlow计算框架可以很好地支持深度学习的各种算法。
TensorFlow很好地兼容了学术研究和工业生产的不同需求。
- 一方面,TensorFlow的灵活性使得研究人员能够利用它快速实现新的模型设计;
- 另一方面,TensorFlow强大的分布式支持,对工业界在海量数据集上进行的模型训练也至关重要。作为谷歌开源的深度学习框架,TensorFlow包含了谷歌过去10年间对于人工智能的探索和成功的商业应用。
除了TensorFlow,目前还有一些主流的深度学习开源工具可以使用。每个工具都有着各自的特点,可以根据自己的需求和喜好选择适合自己的深度学习工具。比如我一开始学习深度学习的时候接触的是Caffe,然后TensorFlow开源之后了解到了TensorFlow的一些特性,感觉还是更喜欢TensorFlow的风格,当然也考虑到会使用一种以上的深度学习工具也算见不错的事情。
其它一些主流的深度学习工具有:
- Caffe: http://caffe.berkeleyvision.org/(Convolutional Architecture for Fast Feature Embedding) BVLC
- MXNet: http://mxnet.readthedocs.io/en/latest/(百度 DMLC(分布式机器学习社区) 简称”深盟”)
- Torch: http://torch.ch/(Facebook Google DeepMind Twitter FAIR)
- Theano: http://deeplearning.net/software/theano/(the LISA group at the University of Montreal(蒙特利尔))
- TensorFlow: https://www.tensorflow.org/(Google)
- CNTK(微软深度学习工具包 )
- DeepLearning4J: http://deeplearning4j.org/
- deepmat: https://github.com/kyunghyuncho/deepmat
- Neon: http://neon.nervanasys.com/docs/latest/index.html
- Eblearn: http://eblearn.sourceforge.net/
- PyLearn: http://deeplearning.net/software/pylearn2/
- chainer: https://github.com/pfnet/chainer
Bahrampour S, Ramakrishnan N, Schott L, et al. Comparative Study of Deep Learning Software Frameworks[J]. Computer Science, 2016.
这篇文章对现在流行的五个开源深度学习框架 caffe、Neon、TensorFlow、Theano、Torch 做了很严谨比较。作者开源了他们的比较 Benchmarks 代码:https://github.com/DL-Benchmarks/DL-Benchmarks。
文章比较了:可扩展性(extensibility)、hardware utilization(硬件利用率)和速度(speed)三个方面
- 评估测试都是部署在单机上,对于多线程 CPU、GPU(Nvidia Titan X)都进行测试
- 速度评估标准包括了梯度计算时间(gradient computation time)、前向传播时间(forward time)
- 对于卷积神经网络,作者还对这几个深度框架支持的不同的卷积算法以及相应的性能表现做了实验
通过实验得出了以下结论
- Theano、Torch 是最具扩展性的深度学习框架
- 在 CPU 上的测试性能来看,Torch 最优,其次是 Theano
- 在 GPU 上的性能表现,对于大规模卷积以及全连接网络,还是 Torch 最优,其次是 Neon
- Theano 在部署和训练 LSTM 网络中夺得拔筹
- caffe 是最容易测试评估性能的标准深度学习框架
- 最后,TensorFlow 与 Theano 有些相似,是比较灵活的框架,但是其性能表现,目前还比不上上面的几个框架
但是,毕竟这篇文章已经是过去时了,那时候TensorFlow 还只能用 cuDNN v.2 版本,而我现在已经装的是v5.1版本,而且TensorFlow 也已经发布了1.0版本。现在各工具性能如何,还需要新的评测才能说明问题。
变量:创建、初始化、保存和加载
当训练模型时,用变量来存储和更新参数。变量包含张量 (Tensor)存放于内存的缓存区。建模时它们需要被明确地初始化,模型训练后它们必须被存储到磁盘。这些变量的值可在之后模型训练和分析是被加载。
本文档描述以下两个TensorFlow类。点击以下链接可查看完整的API文档:
tf.Variable 类
tf.train.Saver 类
参考TensorFlow中文社区
- 添加神经层
输入参数有 inputs
, in_size
, out_size
, 和 activation_function
# 添加层
def add_layer(inputs, in_size, out_size, activation_function=None):weights = tf.Variable(tf.random_normal([in_size, out_size]), name='weights')biases = tf.Variable(tf.zeros([1, out_size]) + 0.1, name='biases')y = tf.matmul(inputs, weights) + biasesif activation_function is None:outputs = yelse:outputs = activation_function(y)return outputs
- loss
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction), reduction_indices=[1]))
- 分类问题的 loss 函数 cross_entropy 交叉熵
loss = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(prediction), reduction_indices=[1]))
- 创建
当创建一个变量时,你将一个张量作为初始值传入构造函数Variable()。TensorFlow提供了一系列操作符来初始化张量,初始值是常量或是随机值。
注意,所有这些操作符都需要你指定张量的shape。那个形状自动成为变量的shape。变量的shape通常是固定的,但TensorFlow提供了高级的机制来重新调整其行列数。
# Create two variables.
weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35), name="weights")
biases = tf.Variable(tf.zeros([200]), name="biases")
- 初始化
变量的初始化必须在模型的其它操作运行之前先明确地完成。最简单的方法就是添加一个给所有变量初始化的操作,并在使用模型之前首先运行那个操作。
使用tf.global_variables_initializer()
添加一个操作对变量做初始化。记得在完全构建好模型并加载之后再运行那个操作。
# 7.初始化变量
init = tf.global_variables_initializer()
# tf.global_variables_initializer()是并行地初始化所有变量
# 有时候会需要用另一个变量的初始化值给当前变量初始化,这就需要注意了
# 用其它变量的值初始化一个新的变量时,使用其它变量的initialized_value()属性。
# 你可以直接把已初始化的值作为新变量的初始值,或者把它当做tensor计算得到一个值赋予新变量。
# w1 = tf.Variable(tf.random_normal([784, 200], stddev=0.35), name="w1")
# w2 = tf.Variable(w1.initialized_value(), name="w2")# 8.启动图 (graph)
sess = tf.Session()
sess.run(init)
- 由另一个变量初始化
你有时候会需要用另一个变量的初始化值给当前变量初始化。由于tf.global_variables_initializer()
是并行地初始化所有变量,所以在有这种需求的情况下需要小心。用其它变量的值初始化一个新的变量时,使用其它变量的initialized_value()
属性。你可以直接把已初始化的值作为新变量的初始值,或者把它当做tensor计算得到一个值赋予新变量。
w1 = tf.Variable(tf.random_normal([784, 200], stddev=0.35), name="w1")
w2 = tf.Variable(w1.initialized_value(), name="w2")
TensorFlow学习笔记(1)--TensorFlow简介,常用基本操作相关推荐
- tensorflow学习笔记——使用TensorFlow操作MNIST数据(1)
续集请点击我:tensorflow学习笔记--使用TensorFlow操作MNIST数据(2) 本节开始学习使用tensorflow教程,当然从最简单的MNIST开始.这怎么说呢,就好比编程入门有He ...
- TensorFlow学习笔记——《TensorFlow技术解析与实战》
著名历史学家斯塔夫里阿诺斯在<全球通史>中,曾以15世纪的航海在"物理上"连通"各大洲"作为标志将人类历史划分为两个阶段.在我正在写作的<互联 ...
- Tensorflow学习笔记2:About Session, Graph, Operation and Tensor
简介 上一篇笔记:Tensorflow学习笔记1:Get Started 我们谈到Tensorflow是基于图(Graph)的计算系统.而图的节点则是由操作(Operation)来构成的,而图的各个节 ...
- Win10:tensorflow学习笔记(4)
前言 学以致用,以学促用.输出检验,完整闭环. 经过前段时间的努力,已经在电脑上搭好了深度学习系统,接下来就要开始跑程序了,将AI落地了. 安装win10下tensforlow 可以参照之前的例子:w ...
- Win10: tensorflow 学习笔记(3)
前言 学以致用,以学促用.输出检验,完整闭环. 怕什么真理无穷,进一寸有一寸的欢喜--胡适 经过前段时间的努力,已经在电脑上搭好了深度学习系统,接下来就要开始跑程序了,将AI落地了. 安装win10下 ...
- tensorflow学习笔记1
tensorflow学习笔记1 本文主要记录我在慕课上观看北大曹建老师的<人工智能实践:Tensorflow笔记>,链接:https://www.icourse163.org/course ...
- tensorflow学习笔记一:安装调试
denny的学习专栏 徐其华 博客园 首页 新随笔 联系 管理 订阅 随笔- 129 文章- 0 评论- 791 tensorflow学习笔记一:安装调试 用过一段时间的caffe后,对caff ...
- tensorflow学习笔记(八):LSTM手写体(MNIST)识别
文章目录 一.LSTM简介 二.主要函数 三.LSTM手写体(MNIST)识别 1.MNIST数据集简介 2.网络描述 3.项目实战 一.LSTM简介 LSTM是一种特殊的RNN,很好的解决了RNN中 ...
- [TensorFlow 学习笔记-06]激活函数(Activation Function)
[版权说明] TensorFlow 学习笔记参考: 李嘉璇 著 TensorFlow技术解析与实战 黄文坚 唐源 著 TensorFlow实战郑泽宇 顾思宇 著 TensorFlow实战Googl ...
- tensorflow学习笔记(1)------北京大学 曹健
tensorflow学习笔记(1) 0 环境搭建 tensorfolw的环境搭建(anaconda版,一步到位) 视频里环境搭建过程很详细,就不细说了.(视频中也有配置视频,链接在文末) 另外,本笔记 ...
最新文章
- Log4j日志管理的用法
- maven编译时出现读取XXX时出错invalid LOC header (bad signature)
- Ms Press China MVP-书评活动-王万利 Microsoft Active Directory Administrator's Pocket Consultant...
- 会计的思考(38):会计--让业务做到心中有数,有真数
- 【JVM性能调优】使用jstack找出最耗CPU的java线程
- java 0 1背包_浅谈java实现背包算法(0-1背包问题)
- php csrf攻击教程,HTTP路由实例教程(三)—— CSRF攻击原理及其防护
- 中国移动回应“5G消息APP”下架:并非面向客户商用发布的产品
- Hyperledger Fabric教程(12)--链码chaincode样例
- 网络收包流程-报文从网卡驱动到网络层(或者网桥)的流程(非NAPI、NAPI)(一)
- Tomcat8安装步骤-win10-64位系统
- 做自媒体原创视频多平台分发,视频一键发布多平台方法教程
- 学习笔记:SSM框架项目搭建
- 常见的GC算法(GC的背景与原理)
- HTML+CSS+JS 科学计算器apk+源码
- IT运维服务的主要内容
- NBA球队中英文名对照大全附带各个球队的LOGO手机壁纸
- 基础练习21- Sine之舞(python答案)
- 计算机网络原理复习(一)
- 20 Linux Server Hardening Security Tips