深度学习笔记2--TensorFlow基础

安装

跟往常一样,我们用 Conda 来安装 TensorFlow。你也许已经有过 TensorFlow 的环境,但确认一下你有所有必要的包。

OS X 或 Linux

运行下列命令来配置开发环境

conda create -n tensorflow python=3.5
source activate tensorflow
conda install pandas matplotlib jupyter notebook scipy scikit-learn
conda install -c conda-forge tensorflow

Windows

Windows系统,在你的console 或者 Anaconda shell 界面,运行

conda create -n tensorflow python=3.5
activate tensorflow
conda install pandas matplotlib jupyter notebook scipy scikit-learn
conda install -c conda-forge tensorflow


 

Tensor

在 TensorFlow 中,数据不是以整数,浮点数或者字符串形式存在的。这些值被封装在一个叫做 tensor 的对象中。在hello_constant = tf.constant('Hello World!') 代码中,hello_constant是一个 0 维度的字符串 tensor。


tf.constant() 返回的 tensor 是一个常量 tensor,因为这个 tensor 的值不会变。

Session

TensorFlow 的 api 构建在 computational graph 的概念上,它是一种对数学运算过程进行可视化的一种方法。让我们把你刚才运行的 TensorFlow 的代码变成一个图:

深度学习笔记2--TensorFlow基础_第1张图片

如上图所示,一个 "TensorFlow Session" 是用来运行图的环境。这个 session 负责分配 GPU(s) 和/或 CPU(s) 包括远程计算机的运算。让我们看看怎么使用它:

hello_constant = tf.constant('Hello World!')
with tf.Session() as sess:
    output = sess.run(hello_constant)


这段代码已经从上一行创建了一个 tensor hello_constant。下一行是在session里对 tensor 求值。

这段代码用 tf.Session 创建了一个sess的 session 实例。 sess.run() 函数对 tensor 求值,并返回结果。


输入

在最后一部分中,你向 session 传入一个 tensor 并返回结果。如果你想用一个非常量 non-constant 该怎么办?这就是 tf.placeholder()feed_dict 派上用场的时候了。

tf.placeholder()

很遗憾,你不能把数据赋值到 x 在把它传给 TensorFlow。因为后面你需要你的 TensorFlow 模型对不同的数据集采取不同的参数。这时你需要tf.placeholder()

数据经过 tf.session.run() 函数得到的值,由 tf.placeholder() 返回成一个 tensor,这样你可以在 session 开始跑之前,设置输入。

Session’s feed_dict

x = tf.placeholder(tf.string)

with tf.Session() as sess:
    output = sess.run(x, feed_dict={x: 'Hello World'})

tf.session.run()feed_dict 参数设置占位 tensor。上面的例子显示 tensorx 被设置成字符串"Hello, world"。如下所示,也可以用 feed_dict 设置多个 tensor。

x = tf.placeholder(tf.string) 
y = tf.placeholder(tf.int32) 
z = tf.placeholder(tf.float32) 
with tf.Session() as sess: 
    output = sess.run(x, feed_dict={x: 'Test String', y: 123, z: 45.67})


注意:

如果传入 feed_dict的数据与 tensor 类型不符,就无法被正确处理,你会得到 “ValueError: invalid literal for...”。


TensorFlow 数学

得到输入很棒,但是现在你需要把它用起来。你将用每个人都懂的常用的数学运算,加、减、乘、除来处理 tensor。

加法

x = tf.add(5, 2)  # 7

从加法开始, tf.add() 完成的工作与你期望的一样。它把两个数字,两个 tensor,返回他们的和。

减法和乘法

这是减法和乘法的例子:

x = tf.subtract(10, 4) # 6 
y = tf.multiply(2, 5) # 10

x tensor 求值结果是 6,因为 10 - 4 = 6y tensor 求值结果是 10,因为 2 * 5 = 10。是不是很简单!

类型转换

为了让特定运算能运行,有时会对类型进行转换。例如,你尝试下列代码,会报错:


tf.subtract(tf.constant(2.0),tf.constant(1))  # Fails with ValueError: Tensor conversion requested dtype float32 for Tensor with dtype int32:

只是因为常量 1 是整数,但是常量 2.0 是浮点数subtract 需要他们能相符。

在这种情况下,你可以让数据都是同一类型,或者强制转换一个值到另一个类型。这里,我们可以把 2.0 转换成整数再相减,这样就能得出正确的结果:

tf.subtract(tf.cast(tf.constant(2.0), tf.int32), tf.constant(1))   # 1



你可能感兴趣的:(机器学习)