本系列为学习tensorflow文档总结笔记,坚持下去啊+_+
但是我们发现通过下面的模块来构造训练图可以最大限度的提高代码复用率:
模型输入:包括inputs()、distorted_inputs()等一些操作,分别用于读取CIFAR的图像并进行预处理,做为后续评估和训练的输入;
模型预测:包括inference()等一些操作,用于进行统计计算,比如在提供的图像进行分类; adds operations that perform inference, i.e. classification, on supplied images.
模型训练:包括loss()andtrain()等一些操作,用于计算损失、计算梯度、进行变量更新以及呈现最终结果
1、模型输入
这个里面有两个注意的地方:白化处理和数据增强
白化处理---使得模型对图片的动态范围变化不敏感
一幅图像最终成像会受环境照明强度、物体反射、拍摄相机等多因素的影响。为了能够图像的中包含的那些不受外界影响的恒定信息,我们需要对图像进行白化处理。一般为了去除这些因素的影响,我们将它的像素值转化成零均值和单位方差。
采取了一系列随机变换的方法来人为的增加数据集的大小:
对图像进行随机的左右翻转;
随机变换图像的亮度;
随机变换图像的对比度;
2、模型预测
模型的预测流程由inference()构造,该函数会添加必要的操作步骤用于计算预测值的logits,其对应的模型组织方式如下所示:
3、模型训练
训练一个可进行N维分类的网络的常用方法是使用多项式逻辑回归,又被叫做softmax 回归。Softmax 回归在网络的输出层上附加了一个softmax nonlinearity,并且计算归一化的预测值和label的1-hot encoding的交叉熵。在正则化过程中,我们会对所有学习变量应用权重衰减损失。模型的目标函数是求交叉熵损失和所有权重衰减项的和,loss()函数的返回值就是这个值。
网友评论