TensorFlow学习笔记(一)
TensorFlow学习笔记(一)TensorFlow是利用人工智能神经网络来分析和处理复杂数据结构的系统,是一种支持深度学习的开源软件库,可以实现卷积神经网络(CNN)、循环神经网络(RNN)和深度神经网络(DNN)等经典算法,并在语音识别、自然语言理解、计算机视觉等方面得到了广泛的应用。TensorFlow借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU、TPU)和..
TensorFlow学习笔记(一)
TensorFlow是利用人工智能神经网络来分析和处理复杂数据结构的系统,是一种支持深度学习的开源软件库,可以实现卷积神经网络(CNN)、循环神经网络(RNN)和深度神经网络(DNN)等经典算法,并在语音识别、自然语言理解、计算机视觉等方面得到了广泛的应用。
TensorFlow借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU、TPU)和设备(桌面设备、服务器集群、移动设备、边缘设备等)
**特点:**速度快、扩展性好、灵活性高,以及具备计算图和数据分析的一系列可视化工具。
其他主流深度学习框架:Keras、caffe、PyTorch等
TensorFlow编程初体验
本次学习在Anaconda中的Jupyter Notebook中编译运行,新建python3文件
输入,按“Ctrl+Enter”执行;
import tensorflow as tf #导入tensorflow
print("TensorFlow版本是:",tf.__version__) #显示当前TensorFlow版本
导入TensorFlow库,当前的版本是2.0.0
node1 = tf.constant([[3.0,1.5],[2.5,6.0]],tf.float32)
node2 = tf.constant([[4.0,1.0],[5.0,2.5]],tf.float32)
node3 = tf.add(node1, node2)
node3
输出的是一个Tensor
print(node3,numpy()) #输出运算结果Tensor的值
得到Tensor的值,通过 numpy()方法
TensorFlow 名称的含义
TensorFlow = Tensor + Flow
Tensor 张量
数据结构:多维数组
Flow 流
计算模型:张量之间通过计算而转换的过程
TensorFlow是一个通过计算图的形式表述计算的编程系统
每一个计算都是计算图上的一个节点;
节点之间的边描述了计算之间的关系;
张量
张量的概念
- 在TensorFlow中,所有的数据都通过张量的形式来表示
- 从功能的角度,张量可以简单理解为多维数组
零阶张量表示标量(scalar),也就是一个数;
一阶张量为向量(vector),也就是一维数组;
n阶张量可以理解为一个n维数组; - 张量并没有真正保存数字,它保存的是计算过程
张量方法和属性
标识号(id)
系统自动维护的唯一值
形状(shape)
张量的维度信息
类型(dtype)
每一个张量会有一个唯一的类型,TensorFlow会对参与运算的所有张量进行类型的检查,发现类型不匹配时会报错
值(value)
通过numpy()方法获取,返回Numpy.array类型的数据
print(node3.numpy()) #输出[[7. 2.5]]
# [7.5 8.5]]
print(node3.shape) #输出(2, 2),即矩阵的长和宽均为2
print(node3.dtype) #输出<dtype: 'float32'>
张量的形状
三个术语描述张量的维度:阶(rank)、形状(shape) 、维数(dimension number)
表中D0表示第0维元素的个数,Di表示Di维元素的个数
小技巧:看几维直接看最左边的中括号有几个就好;
scalar = tf.constant(100)
vector = tf.constant([1, 2, 3, 4, 5])
matrix = tf.constant([[1, 2, 3], [4, 5, 6]])
cube_matrix = tf.constant([[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9]]])
print(scalar.shape) #输出()
print(vector.shape) #输出(5,)
print(matrix.shape) #输出(2, 3)
print(cube_matrix.shape) #输出(3, 3, 1)
查看张量的shape属性还可以通过get_shape()方法来获取。
张量的阶
张量的阶(rank)表征了张量的维度
获取张量的元素
阶为1的张量等价于向量;
阶为2的张量等价于矩阵,通过 t[i, j] 获取元素;
阶为3的张量,通过 t[i, j, k] 获取元素;
下标从0开始
cube_matrix = tf.constant([[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9]]])
print(cube_matrix.numpy()[1,2,0]) #输出6
张量的类型
TensorFlow支持不同的类型
实数 tf.float32, tf.float64
整数 tf.int8, tf.int16, tf.int32, tf.int64, tf.uint8
布尔 tf.bool
复数 tf.complex64, tf.complex128
默认类型:
不带小数点的数会被默认为int32
带小数点的会被默认为float32
每个张量都会有一个唯一的类型,TensorFlow在进行运算的时候会对参与运算的所有张量进行类型的检查,发现类型不匹配时会报错。
a = tf.constant([1, 2])
b = tf.constant([2.0, 3.0])
result = tf.add(a,b) #运行报错
在TensorFlow中可以通过tf.cast()进行数据类型转换:
a = tf.constant([1, 2])
b = tf.constant([2.0, 3.0])
a = tf.cast(a,tf.float32) #数据类型转换
result = tf.add(a,b)
result
常量与变量
常量 constant
在运行过程中值不会改变的单元
创建语句:
tf.constant(
value,
dtype=None,
shape=None,
name=‘Const’
)
在创建常量时只有value值是必填的,dtype 等参数可以缺省,会根据具体的value值设置相应的值.
变量 Variable
在运行过程中值可以被改变的单元
创建语句:
注意V是大写字母
变量 Variable
tf.Variable (
initial_value,
dtype=None,
shape=None,
trainable =True
name=’Variable’
v1 = tf.Variable([1, 2])
v2 = tf.Variable([3, 4],tf.float32)
v1,v2
变量在创建时必须确定初始值,可以像定义常量一样
也可以用一个张量作为初始值;
- 在TensorFlow中变量和普通编程语言中的变量有着较大区别
- TensorFlow中的变量是一种特殊的设计,是可以被机器优化过程中自动改变值的张量,也可以理解为待优化的张量。
- 在TensorFlow中变量创建后,一般无需人工进行赋值,系统会根据算法模型,在训练优化过程中自动调整变量的值。
- 在变量的参数中,trainable参数用来表征当前变量是否需要被自动优化,创建变量对象时默认是启用自动优化标志。
变量的赋值
- 与传统编程语言不同,TensorFlow中的变量定义后,一般无需人工赋值, 系统会根据算法模型,训练优化过程中自动调整变量对应的数值;
- 特殊情况需要人工更新的,可用变量赋值语句***assign()***来现实;
v = tf.Variable(5)
v.assign(v+1)
v
TensorFlow还直接提供了assign_add()、assign_sub()方法来实现变量的加法和 减法值更新
v1 = tf.Variable(5)
v2 = tf.Variable(5)
v1.assign_add(1)
v2.assign_sub(1)
v1,v2
更多推荐
所有评论(0)