首页 > 人工智能(Artificial Intelligence) > TensorFlow框架 > TensorFlow框架安装与入门

TensorFlow 数据模型 -- 张量

Tensor

在 TensorFlow 程序中,所有 的数据都通过张量的形式来表示。从功能的角度上看,张量可以被简单理解为多维数组。

其中零阶张量表示标量( scalar ) ,也就是一个数; 第一阶张量为向量(vector),也就是一个一维数组;第 n 阶张量可以理解为一个 n 维数组 。

但张量在 TensorFlow 中的实现并不是直接采用数组的形式,它只是对 TensorFlow 中运算结果的引用。在张量中并没有真正保存数字,它保存的是如何得到这些数字的计算过程。

以向量加法为例,当运行如下代码时,并不会得到加法的结果,而会得到对结果的一个引用。

product = tf.matmul(matrix1, matrix2)
print(product) # Tensor("MatMul:0", shape=(1, 1), dtype=float32)

一个张量中主要保存了三个属性 : 名字( name )、维度( shape )和类型( type )

  • 第一个属性名字不仅是一个张量的唯一标识符 , 它同样也给出了这个张量是如何计算出来的
  • 第二个属性是张量的维度( shape )。这个属性描述了 一个张量的维度信息
  • 第三个属性是类型( type ),每一个张量会有一个唯一的类型。

TensorFlow 会对参与运算的所有张量进行类型的检查 , 当发现类型不匹配时会报错。

TensorFlow 支持 14 种不同的类型, 主要包括了实数( tf.float32 、 tf.float64 )、整数( tf.int8 、 tf.intl 6 、 tf.int32 、 tf.int64 、 tf.uint8 )、布尔型 C tf.bool) 和复数( tf.complex64 、tf.complex128 ) 。

Feed

上述示例在计算图中引入了 tensor,以常量或变量的形式存储。ensorFlow 还提供了 feed 机制,该机制 可以临时替代图中的任意操作中的 tensor 可以对图中任何操作提交补丁,直接插入一个 tensor。

feed 使用一个 tensor 值临时替换一个操作的输出结果。你可以提供 feed 数据作为 run() 调用的参数。feed 只在调用它的方法内有效,方法结束,feed 就会消失。

最常见的用例是将某些特殊的操作指定为 "feed" 操作,标记的方法是使用 tf.placeholder() 为这些操作创建占位符。

input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = tf.multiply (input1, input2)

with tf.Session() as sess:
print(sess.run([output], feed_dict={input1:[7.], input2:[2.]}))

# [array([ 14.], dtype=float32)]
关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。