什么是tensorflow
简单说来,tensorflow是一个从底层到高层的库。
什么是张量
张量就是客观实体的数字表示形式
-
在tensorflow中,张量是某种相同数据类型的多维数组
- 数据类型(整型,浮点型,字符串等)
- 数组形状 (数组的大小等属性)
-
tenserflow中特殊的张量
- tf.constant() 常量
- tf.placeholder() 占位符
- tf.Variable() 变量
Tensorflow中的操作
- 存储节点:存储张量
- 计算节点:算法逻辑表达
- 数据节点:数据占位符操作,用于描述图外数据输入的属性
操作的输入输出都是张量或者操作(函数式编程)
会话
#1.创建回话
sess = tf.Session(target=..., graph=..., config=...)
#2.估算张量或者执行操作
sess.run(...)
#3.关闭会话
sess.close()
或者
import tensorflow as tf
#创建数据流图,y=W*x+b,其中W和b为存储节点,x为数据节点
x = tf.placeholder(tf.float32)
W = tf.Variable(1.0)
b = tf.Variable(1.0)
y = W * x + b
with tf.Session() as sess:
tf.global_variables_initializer().run() #Operation.run
fetch = y.eval(feed_dict={x=3.0}) #Tensor.eval
print(fetch) #fetch = 1.0 * 3.0 +1.0
优化器
-
损失函数:损失函数是评估特定模型参数和特定输入时,表达模型输出的推理值与真实值之间不一致程度的函数。损失函数L的定义如下:
- loss = L(f(xi ; θ), y-i)
如果过度追求训练数据上的低损失值,就会遇到过拟合问题。训练集通常并不能完全代表真是场景的数据分布,当两者的分布不一致时,如果过分依赖训练集上的数据,面对新数据时就会无所适从,这时模型的范化能力就会变差。
- loss = L(f(xi ; θ), y-i)
-
优化算法
- 典型深度学习和机器学习问题都转化成最优化问题进行求解
- 求解最优化问题的算法称为优化算法,他们通常采用迭代方式实现:首先设定一个初始的可行解,然后基于特定的函数反复计算可行解,直到找到一个最优解或达到预设的收敛条件。不同的优化算法采用的迭代策略各有不同:
- 有的使用目标函数的一阶导数,如梯度下降法
- 有的使用目标函数的二阶导数,如牛顿法
- 有的使用前几轮的迭代信息,如Adam
- 有的使用目标函数的一阶导数,如梯度下降法
-
优化器是实现优化算法的载体。一次典型的迭代优化应该分为以下三个部分:
- 计算梯度:调用compute_gradients方法
- 处理梯度:用户按照自己需求处理梯度值,如梯度裁剪和梯度加权等
- 应用梯度:调用apply_gradients方法,将处理后的梯度值应用到模型参数