深度学习中一些小问题(python篇)
1.验证集,测试集,训练集间的关系?
训练集:训练模型,或者训练模型参数的
验证集:做模型的优化及最终确定模型参数的,确定网络结构和确定模型复杂度的参数的;
测试集:检验最终确定的选择最有模型的性能
前两者在构建模型时使用,因为构建模型时有时候也需要验证数据,检验模型。在构建模型过程中,用验证集检验可以有效的避免“过拟合”。
2.用python调用深度学习模型时,此时模型处在什么阶段?输入是什么?输出又是什么?
此时的模型是最终确定的模型,此时的流入数据是属于测试集的数据。
对模型输入的是pic类型的文件,输出的是图片的预测概率和预测概率最大的图片;
3.请简要描述从数据流的角度描述 图片数据在网络结构中的 流动进程,可以吗?
我能说不可以吗?
(1)img文件先从数据输入层进入网络结构模型
(2)python调用分类器,对img文件进行处理(将网络模型封装在一个 分类器类 中)
(3)网络模型从损失函数层输出图片在各子集的预测概率
分类器完成的工作:
初始化网络结构 self.net=caffe.Net(deploy,model,self.Test)
将图片送入数据输入层的blobs数据结构中
self.net.blobs['data'】.data[...]=img
在卷及神经网络结构中执行前向计算,在prob层中输出概率
Out=Self.net.forward()['prob ']
4.python与网络模型的关系是什么?
通过数据集、验证集生成一个最优的模型
通过python调用这个模型来实现 模型的识别功能
二者的联系是python api 调用caffe 框架提供的 接口 实现的,所以在使用前要python添加 caffe、sys库
5.什么是均值文件?问什么要转化均值文件?转化均值文件发生在深度学习的哪一个阶段?
均值文件是数据缩放过程中产生的,目的是使:通过对数据每一个维度的值进行调节,使最终的数据向量落在0~1之间,这对后面概率化的处理很有帮助。如:图像的像素是在[0,255],常用处理是除以255,使其缩放在[0,1]之间。
转化均值发生在深度学习的图像预处理阶段。
6.请用python描述图像的预处理过程。
tips:目的:将模型训练过程中产生的存储在binaryproto中的均值转化为npy格式,并从中读取均值文件
网络中的类型:文件在网络结构中存储的类型是blobs,blobs是个四维数组
声明blobs变量(由caffe框架声明)
打开.binaryproto文件,存储在某变量中,此处为bin_mean
将bin_mean转化为string类型,存储在blob变量中
将blob变量转化为数组,存在数组变量arr中,其中arr[0]为均值(至于为什么是arr[0],我也不晓得)
将数组均值存储在.npy文件中。
7..binaryproto中数据的几本书类型是什么呢?
blobs类型