Tensorflow 基础知识

Tensorflow 基于数据流图的原理工作。要执行一些计算,有两个步骤:

  1. 将计算表示为图形。
  2. 执行图表。

表示: 与任何有向图一样,Tensorflow 图由节点和有向边组成。

节点:节点也称为 Op(代表操作)。一个节点可以有多个传入边但只有一个传出边。

边缘:指示节点的传入或传出数据。在这种情况下,一些节点(Op)的输入和输出。

每当我们说数据时,我们指的是一个称为 Tensor 的 n 维向量。Tensor 有三个属性: Rank,Shape 和 Type

  • 等级表示张量的维数(立方体或框具有等级 3)。
  • 形状表示这些尺寸的值(框可以具有形状 1x1x1 或 2x5x7)。
  • Type 表示 Tensor 的每个坐标中的数据类型。

执行: 即使构建了图形,它仍然是一个抽象实体。在我们运行它之前,实际上没有计算。要运行图形,我们需要将 CPU 资源分配给图形内的 Ops。这是使用 Tensorflow 会话完成的。步骤是:

  1. 创建一个新会话。
  2. 在图表中运行任何 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()