TensorFlow学习笔记(1):
目录:
TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。
TensorFlow可被用于语音识别或图像识别等多项机器学习和深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。TensorFlow将完全开源,任何人都可以用。
张量
张量:是一种表示物理的方式,这个方式就是基于向量分组表示
标量:0个基向量:0-mode tensor
向量:1个基向量:1-mode tensor
矩阵:2个基向量:2-mode tensor
…
张量可以表示为多维
张量的属性
张量并没有真正的保存数字,它保存的是计算过程
属性:
名字(name):节点名称,来自节点的第几个输出
形状(shape):张量的维度信息
类型(type):唯一的类型
张量的形状
三个术语描述张量的维度
阶(rank)
形状(shape)
维数(dimension number)
|阶|形状|维数|示例|
张量的阶
张量的阶:张量的维度
张量的类型:
支持多种不同的类型
对参与运算的所有张量进行类型的检查
发现类型不匹配时会报错
创建张量-常量:
张量由Tensor类实现,每个张量都是一个Tensor对象;使用tf.constant()函数来创建张量,即:tf.constant(value,dtype,shape)
例:使用python列表作为参数,创建一个张量。
t1=tf.constant([[1,2],[3,4]])
print(t1)
结果:
tf.Tensor(
[[1 2]
[3 4]], shape=(2, 2), dtype=int32)
例:使用数字作为参数,创建一个张量
t1=tf.constant(1.0)
print(t1)
结果:
tf.Tensor(1.0, shape=(), dtype=float32)
例:改变dtype
t1=tf.constant(1.0,dtype=tf.float64)
print(t1)
结果:
tf.Tensor(1.0, shape=(), dtype=float64)
例:使用numpy数组作为参数,创建一个张量
t1=tf.constant(np.array([1,2.]))
print(t1)
结果:
tf.Tensor([1. 2.], shape=(2,), dtype=float64)
例:使用布尔型作为参数,创建一个张量
tf.cast强制转换为某类型
t_1=tf.constant([True,False])
print(t_1)
t_2=tf.cast(t_1,tf.int32)
print(t_2)
t_3=tf.constant([-1,1,2,0])
print(t_3)
t_4=tf.cast(t_3,tf.bool)
print(t_4)
结果:
tf.Tensor([ True False], shape=(2,), dtype=bool)
tf.Tensor([1 0], shape=(2,), dtype=int32)
tf.Tensor([-1 1 2 0], shape=(4,), dtype=int32)
tf.Tensor([ True True True False], shape=(4,), dtype=bool)
例:使用字符串作为参数,创建一个张量
t_1=tf.constant("hello world")
print(t_1)
t_2=tf.ones(shape=(2,1))
print(t_2)
t_3=tf.zeros(shape=(2,3))
print(t_3)
结果:
tf.Tensor(b'hello world', shape=(), dtype=string)
tf.Tensor(
[[1.]
[1.]], shape=(2, 1), dtype=float32)
tf.Tensor(
[[0. 0. 0.]
[0. 0. 0.]], shape=(2, 3), dtype=float32)
例:下面的区别吗?
t_1=tf.ones([4,3])
print(t_1)
t_2=tf.ones((4,3))
print(t_2)
t_1=tf.zeros([4,3])
print(t_1