tensorflow学习笔记(一)

该笔记使用斯坦福的tensorflow课程CS20SI作为教程,可以在https://web.stanford.edu/class/cs20si/syllabus.html获得相关资源

为什么要学习tensorflow

因为tensorflow是目前最流行的开源深度学习框架,由google开发,跨平台且具有良好的可移植性。 当然是因为用的人多,资料好找,例子大把大把的。国外都不流行的框架,国内想耍肯定不容易。此外,使用python的api也是原因之一,毕竟好上手嘛。

安装并使用tensorflow

安装教程: https://www.tensorflow.org/install/

跟着官方的说明走走就是了,但如果要安装gpu版的,有些地方就要注意了。

http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#system-requirements
参考这个网址,建议选择其中的发行版,跟着教程安装cuda和cudnn(我就因为linux本身的问题导致opengl出了问题,不过貌似没啥影响)。

安装成功后,打开终端的python命令行,如果下面这行代码不报错,差不多就成功了。

import tensorflow as tf

如果有问题就慢慢查资料吧~

基本概念: 张量(tensor)

张量(tensor)是一个n维的数组

  • 0维的tensor是一个标量(scalar)
  • 1维的tensor是一个向量(vector)
  • 2维的tensor是一个矩阵(matrix)

基本概念: 图(Graph)和会话(Session)

图(Graph)是计算过程的组合,会话(Session)则用于启动Graph。

tensorflow学习笔记(一)_第1张图片
一个graph的例子

一个简单的graph:

a = tf.add(1, 2)

这行代码会让tensorflow自动将x,y分别赋值为1,2。至于为什么是x和y?当没有手动指定时,默认就是这样。
要注意的是,a的值不是3,要得到3,需要使用session。

a = tf.add(1, 2)
sess = tf.Session()
print(sess.run(a))
sess.close()

也有另一种写法:

a = tf.add(1, 2)
with tf.Session() as sess:
    print(sess.run(a))

每个graph都包含数个节点(nodes),这些node有多种类型

  • 常量(constant)
  • 变量(variable)
  • 运算符(operator)
  • 占位符(placeholder)

而连接node之间的线(edges),则在nodes之间传递tensor

来看一个大点的graph:

tensorflow学习笔记(一)_第2张图片
x = 2
y = 3
add_op = tf.add(x, y)
multiply_op = tf.multiply(x, y)
useless = tf.multiply(x, add_op)
pow_op = tf.pow(op2, op1)
with tf.Session() as sess:
    sess.run(pow_op)

在这段代码中,useless这个运算符并不会被用到,session不会计算无用的值

当然,在tensorflow中,一个完整的图可以被分成多块,由多个不同设备进行运算。

tensorflow学习笔记(一)_第3张图片

你可能感兴趣的:(tensorflow学习笔记(一))