一、什么是tensorflow
tensorflow这个名字中包含两个概念:tensor和flow。tensor就是张量,flow体现计算模型,表达了张量之间通过相互转化的过程。tensorflow是一个通过计算图的形式来表述计算的编程系统。tensorflow中的每一个计算都是计算图上的一个节点,而节点之间的边描述了计算之间的依赖关系。
如上图,每个节点都是一个运算,而每一条边代表了计算之间的依赖关系 。
代码实现:
import tensorflow as tf
tf.compat.v1.disable_eager_execution()#保证sess.run()能够正常运行
a = tf.constant([1.0,2.0],name="a") # 定义常量
b = tf.constant([2.0,3.0],name="b")
result = a + b # 定义关系
with tf.compat.v1.Session() as sess:
print(sess.run(result))
tensorflow中的计算图不仅仅可以用来隔离张量和计算,它还提供了管理张量和计算的机制。张量可以被简单理解为多维数组。其中零阶张量表示标量(scalar),也就是一个数;第一阶张量为向量(vector),也就是一个一维数组;第n阶张量可以理解为n阶数组。
张量三个属性:name名字,shape维度,type类型
tensorflow 可以通过python的上下文管理器来使用会话。通过python上下文管理器的机制,只要将所有的计算放在“with”的内部就可以。当上下文管理器退出时候会自动释放所有资源。这样既解决了因为异常退出时资源释放的问题,同时也解决了忘记调用Session.close函数而产生的资源泄漏。
目前主流的神经网络都是分层的结构,第一层是输入层,代表特征向量中每一个特征的取值。在二分类问题中,比如判断零件是否合格,神经网络的输出层往往只包含一个节点,而这个节点输出一个实数值。一般可以认为输出值离阀值越远时得到的答案越可靠。
在输入和输出层之间的神经网络叫做隐藏层。学习率,激活函数,正则化和节点数
前向传播算法简介:
前向传播算法可以表示为矩阵乘法。在tensorflow中矩阵乘法是非常容易实现的。
a = tf.matmul(x,w1)
y = tf.matmul(a,w2)
其中tf.matmul实现了矩阵乘法的功能。
placeholder:用于提供输入数据,placeholder相当于定义了一个位置,这个位置中的数据在程序运行时再指定。
batch:1个epoch等于使用训练集中的全部样本训练一次
epoch:1个epoch等于使用训练集中的全部样本训练一次
iteration:1个iteration等于使用batchsize个样本训练一次
1次epoch(1000个训练样本)= 10batch * 100次iteration
线性模型就能很好区分不同颜色的点,激活函数去实现线性化,如果将每个神经元的输出通过一个非线性函数,那么整个神经网络的模型也就不再是线性了,这个非线性函数就是激活函数
感知机会先将输入进行加权和,然后通过激活函数最后得到输出。
softmax回归本身可以作为一个学习算法来优化分类结果,但在tensorflow中,softmax回归的参数被去掉了,它只是一层额外的处理层。
交叉熵来计算预测的概率分布和真实答案的概率分布之间的距离。
学习率:每次参数移动的幅度。
神经网络的优化阶段:
一、先通过前向传播计算得到预测值,并将预测值和真实值做对比得出两者之间的差距。
二、通过反向传播算法计算损失函数对每一个参数的梯度,再根据梯度和学习率使用梯度下降算法更新每一个参数。
当一个模型过为复杂后,它可以很好记忆每一个训练数据中随机噪音的部分而忘记了要去“学习”训练数据中通用的趋势。
tensorflow是一个通过图的形式来表述计算的编程系统,tensorflow程序中的所有计算都会被表达为计算图上的节点。tensorflow通过元图(metagraph)来记录计算图中节点的信息以及运行计算图中的节点所需要的元数据。tensorflow中元图是由metagraphdef protocol buffer定义的,metagraphdef的内容构成了持久化的第一个文件。
1.输入层。输入层是整个神经网络的输入,在处理图像的卷积神经网络中,它一般代表了一张图片的像素矩阵。黑白图片的深度为1,RGB色彩模式下,图像的深度为3,从输入层开始,卷积网络通过不同的神经网络结构将上一层的三维矩阵转化为下一层的三维矩阵,直到最后的全连接层。
2.卷积层。卷积层是一个卷积神经网络最为重要的部分,和传统全连接层不同,卷积层中每一个节点的输入只是上一层神经网络的一小块。卷积层试图将神经网络中的每一小块进行更加深入分析从而得到抽象程度更高的特征。
3.池化层。池化层神经网络不会改变三维矩阵的深度,但是它可以缩小矩阵的大小,池化操作可以认为是将一张分辨率较高的图片转化为分辨率较低的图片。通过池化层,可以进一步缩小最后全连接层中节点的个数,从而达到减少整个神经网络中参数的目的。
4.全连接层。经过几轮的卷积层和池化层处理之后,可以认为图像中的信息已经被抽象成了信息含量更高的特征。卷积层和池化层自动图像特征提取的过程。在特征提取完成之后,使用全连接完成分类任务。
5.softmax层。通过softmax可以得到当前样例属于不同种类的概率分布情况。
循环神经网络挖掘数据中时序信息以及语义信息的深度表达能力被充分利用,并在语音识别、语言模型、机器翻译以及时序分析等方面实现了突破。
是一种特殊的循环体结构,LSTM是一种拥有三个门的结构特殊网络结构。“遗忘门”和“输入门”是LSTM的核心。