github上的一个比较有意思的tensorflow教程,一共四大块:热身、基础、基础机器学习、基础神经网络。打算翻译一下搬运过来。
原博文地址:https://github.com/osforscience/TensorFlow-Course#id7
本人github地址,已经更新到第八天:https://github.com/jwc19890114/-02-learning-file-100days
之前热身和线性回归链接如下
https://www.toutiao.com/i6636660269378437635/
https://www.toutiao.com/i6637015044246733316/
在之前第6天的博文中使用Tensorflow实现过一个逻辑回归,再次实现一次。
使用Tensorflow实现逻辑回归
讨论如何通过系统中的线性模型预测连续值参数。
如果对象要求在两个选择中抉择呢?
答案简单,我们转换为可以解决一个分类问题。
数据集
使用MNIST数据集(看来终于要试试这个大名鼎鼎的数据集了,暑假的时候看了一下。)
MNIST数据集包括55000训练集和10000测试集。
图片是28*28,每一张图代表一个手写数字(0-9任意一个)。
我们创建一个大小为764的特征向量,仅使用0和1图。
逻辑回归
在线性回归中,使用线性方程进行预测。另一方面,逻辑回归中我们通过预测一个二元标签0或1。
在逻辑回归中,预测输出是输入样本属于我们的情况下数字“1”的目标类的概率。
损失函数包括两方面,并且在每一个采样中考虑到二进制标记,只有一个是非0的。
处理流程
引入数据集,包含0和1的部分。
实现逻辑回归。用于逻辑回归的代码很大程度上受到《训练卷积神经网络作为分类器》的启发。我们参考上述帖子以更好地理解实现细节。
教程中,仅仅解释数据处理、实现逻辑回归,其余部分可以参考之前CNN分类器。
引入库
关键FLAGS
注意这部分要求参数为int,np.power需要转为int
学习速率、状态、错误警告
数据集处理
注意,需要提前下载MNIST数据集
http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz
http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz
http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz
http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz
数据集下载好之后存在项目文件目录下,进行引用
数据处理
训练维度
设定图示(Tensorflow的图)
graph = tf.Graph()
逻辑回归实现
逻辑回归的结构:是一个简单的通过完全连接的层来馈送转发输入特征,其中最后一层仅具有两个类。
注意
batch、batch size、epoch
batch: batch是批。深度学习每一次参数的更新所需要损失函数并不是由一个获得的,而是由一组数据加权得到的,这一组数据的数量就是batch size。batch的思想,至少有两个作用,一是更好的处理非凸的损失函数,非凸的情况下, 全样本就算工程上算的动, 也会卡在局部优上,批表示了全样本的部分抽样实现,相当于人为引入修正梯度上的采样噪声,使“一路不通找别路”更有可能搜索最优值;二是合理利用内存容量。
如果数据集较小,可以采用全数据集(Full batch learning)的形式,这样有两个显然的好处:1.由全数据集计算的梯度能够更好的代表样本总体,从而更准确的朝向极值所在的方向;2.不同权重的梯度值差别很大,因此选取一个全局的学习率会比较困难(?)batch size最大是样本总数N,此时就是Full batch learning;最小是1,即每次只训练一个样本,这就是在线学习(Online Learning)。
当我们分批学习时,每次使用过全部训练数据完成一次Forword运算以及一次BP运算,成为完成了一次epoch。
接下来的代码接上面,同属session会话中
领取专属 10元无门槛券
私享最新 技术干货