TensorFlow之计算过程与名字来历

介绍:

TensorFlow框架内部也有int, float, string等数据类型,但是直接将Python中的数据类型与TensorFlow中的数据类型进行运算是行不通的。只能是先将Python中的数据转换为TensorFlow中的数据类型,由Tensorflow计算出结果后,再从TensorFlow图中取出来。接下来我们以矩阵运算为例体验Python对象数据传入图中后,再将图的计算结果取出来的过程,代码如下:

import tensorflow as tf
# 定义Python中int类型二维矩阵
A = [[1, 2, 3],
     [4, 5, 6]]
B = [[1, 1], [1, 1], [1, 1]]

# 将Python类型数据A和B传入图中
A_tf = tf.constant(A, dtype=tf.float32, name="A")
B_tf = tf.constant(B, dtype=tf.float32, name="B")

# 构建图中的计算节点
C_tf = tf.matmul(A_tf, B_tf)

print(C_tf)

输出:

tf.Tensor(
[[ 6.  6.]
 [15. 15.]], shape=(2, 2), dtype=float32)

上面代码中,3-5行为定义Python中类型为int的二维数组A和B。第8-9行是将Python数据类型的数据传入TensorFlow图中;第12行是在TensorFlow图中创建一个计算节点,这个计算节点的输入是TensorFlow图中的A_tf和B_tf。到第12行为止,图构建完毕,但是要注意,当前还没有真正执行矩阵运算,只是在图中把矩阵运算的输入和矩阵计算定义完成。

真正开始执行是最后一行,在这一行中,是从图中取出C_tf数据。这要从TensorFlow的内部机制说起,在TensorFlow中,一切数据节点都是Tensor对象,如A_tf和B_tf分别是TensorFlow图中的Tensor对象,C_tf也是TensorFlow图中的Tensor对象。

现在要将C_tf这个Tensor对象从图中取出,TensorFlow框架会自动寻找所有叶子节点到C_tf的路径,并把路径中所有的计算节点(即本例中的矩阵计算)都执行,直到计算结束,即得到C_tf结果。如下图所示。这也正是TensorFlow框架的命名来历,即Tensor+Flow.

发布了105 篇原创文章 · 获赞 17 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/qq_38890412/article/details/104058562
今日推荐