Tensorflow 基础知识
Tensorflow 基于数据流图的原理工作。要执行一些计算,有两个步骤:
- 将计算表示为图形。
- 执行图表。
表示: 与任何有向图一样,Tensorflow 图由节点和有向边组成。
节点:节点也称为 Op(代表操作)。一个节点可以有多个传入边但只有一个传出边。
边缘:指示节点的传入或传出数据。在这种情况下,一些节点(Op)的输入和输出。
每当我们说数据时,我们指的是一个称为 Tensor 的 n 维向量。Tensor 有三个属性: Rank,Shape 和 Type
- 等级表示张量的维数(立方体或框具有等级 3)。
- 形状表示这些尺寸的值(框可以具有形状 1x1x1 或 2x5x7)。
- Type 表示 Tensor 的每个坐标中的数据类型。
执行: 即使构建了图形,它仍然是一个抽象实体。在我们运行它之前,实际上没有计算。要运行图形,我们需要将 CPU 资源分配给图形内的 Ops。这是使用 Tensorflow 会话完成的。步骤是:
- 创建一个新会话。
- 在图表中运行任何 Op。通常我们运行最终的 Op,我们期望计算的输出。
Op 上的传入边缘就像是另一个 Op 上的数据依赖。因此,当我们运行任何 Op 时,它上面的所有传入边都被跟踪,另一边的 ops 也被运行。
注意: 也可以使用称为数据源或接收器的播放角色的特殊节点。例如,你可以有一个 Op,它给出一个常数值,因此没有传入的边缘(在下面的例子中参考值’matrix1’)和类似的 Op 没有传出边缘的结果被收集(参见下面例子中的’product’值)。
例:
https://i.stack.imgur.com/2rIm0.jpg
import tensorflow as tf
# Create a Constant op that produces a 1x2 matrix. The op is
# added as a node to the default graph.
#
# The value returned by the constructor represents the output
# of the Constant op.
matrix1 = tf.constant([[3., 3.]])
# Create another Constant that produces a 2x1 matrix.
matrix2 = tf.constant([[2.],[2.]])
# Create a Matmul op that takes 'matrix1' and 'matrix2' as inputs.
# The returned value, 'product', represents the result of the matrix
# multiplication.
product = tf.matmul(matrix1, matrix2)
# Launch the default graph.
sess = tf.Session()
# To run the matmul op we call the session 'run()' method, passing 'product'
# which represents the output of the matmul op. This indicates to the call
# that we want to get the output of the matmul op back.
#
# All inputs needed by the op are run automatically by the session. They
# typically are run in parallel.
#
# The call 'run(product)' thus causes the execution of three ops in the
# graph: the two constants and matmul.
#
# The output of the op is returned in 'result' as a numpy `ndarray` object.
result = sess.run(product)
print(result)
# ==> [[ 12.]]
# Close the Session when we're done.
sess.close()