AI-Dog

爱生活,乐分享,大家好才是真的好!

导航

TensorFlow基本--张量

在TensorFlow中所有的数据都通过张量的形式表示,从功能上看张量可以被简单的理解为多维数据,其中零阶张量表示标量(一个数),第一阶张量为向量(一个一维数组),第n阶向量可以理解为一个n维数组。

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

import tensorflow as tf
# tf.constant是一个计算,这个计算的结果是一个张量保存在变量a中
a = tf.constant([1.0, 2.0], name="a")
b = tf.constant([3.0, 4.0], name="b")
c = tf.constant([1.0, 1.0, 1.0], name="c")
result = tf.add(a, b, name="add")
print(result)
print(a)
print(c)

"""
Tensor("add:0", shape=(2,), dtype=float32)
Tensor("a:0", shape=(2,), dtype=float32)
Tensor("c:0", shape=(3,), dtype=float32)
"""

 

从输出结果可以看出TensorFlow中的张量和NumPy中的数组不同,TensorFlow计算的结果不是一个具体的数字,而是一个张量结构,一个张量(tensor)中主要保存了三个属性:名字(name), 维度(shape),类型(type)

name属性是一个张量的唯一标识符,同样也给出了这个张量是如何计算出来的

shape属性是张量的维度,描述了张量的维度信息(程序中a变量的维度为2, c的为3)

type属性表示出一个张量只有一个唯一的类型

 

如果不指定type,TensorFlow会给出默认类型。不带小数点的默认int32,带小数点的默认float32。由于使用默认类型可能会带来类型不匹配的问题,一般会通过dtype来明确指出变量或常量的类型。

TensorFlow支持14种数据类型,主要包括:实数(tf.float32, tf.float64),整数(tf.int8, tf.int16, tf.int32, tf.int64, tf.uint8),布尔型(tf.bool), 复数(tf.complex64, tf.complex128)

张量的使用主要分为两类:一,对中间计算结果的引用;二,计算图构造完成后可以用来获取计算结果(数字)

# 使用张量计算中间结果
a = tf.constant([1.0, 2.0], name="a")
b = tf.constant([3.0, 4.0], name="b")
result = tf.add(a, b, name="add")

# 获取张量的维度信息
print(result.get_shape)
# tf.Session().run(result)可得到计算结果
print(tf.Session().run(result))
 
"""
输出
<bound method Tensor.get_shape of <tf.Tensor 'add:0' shape=(2,) dtype=float32>>
[4. 6.]

"""

 



 

posted on 2019-03-10 21:10  AI-Dog  阅读(1074)  评论(0编辑  收藏  举报