深度学习PK传统机器学习
第一种方法:使用sklearn预处理数据以及实现KNN,SVM和BP神经网络。
- 步骤1,使用openCV包,定义2个预处理函数,分别是图像特征向量(用来调整图像大小并将图像扁平化成一系列行像素)和提取颜色直方图(使用cv2.normalize从HSV色域中提取一个3D颜色直方图并做平滑处理)。
- 步骤2,构造参数。由于我们试图在整个数据集以及具有不同类别数目的子数据集上进行性能测试,所以我们把各个数据集看作为参数,以便进行实验分析。另外,我们还设置了KNN中的邻居数目作为参数。
- 步骤3,提取图像特征并写入数组。我们使用cv2.imread函数读取图像,根据规范化的图像名称进行分类。然后运行第步骤1中提到的2个函数,分别得到2种图像特征并写入数组。
- 步骤4,使用函数train_test_split分割数据集。85%的数据作为训练集,15%的数据作为测试集。
- 步骤5,使用KNN,SVM和BP神经网络方法去评估数据。对于KNN,使用KNeighborsClassifier,对于SVM,使用SVC,对于BP神经网络,使用MLPClassifier。
第二种方法:基于TensorFlow构建CNN。使用TensorFlow得到计算图并在C++中实现,比Python更高效。
TensorFlow中使用到的的几个概念:占位符,变量,数学公式,成本计量,最优方法,CNN体系结构。
- 步骤1,第一层放置图像。
- 步骤2,构建3层卷积层(3 Convolutional layers),2X2的max-pooling和ReLU。输入是4维张量:【图像编号,Y坐标,X坐标,通道】。输出是另一个经处理得到的4维张量:【图像编号(不变),Y坐标,X坐标,通道】。
- 步骤3,构建2层全连接层(2 Fully-Connected Layers)。输入是2维张量:【图像编号,输入编号】。输出是2维张量【图像编号,输出编号】。使用
- 步骤4,使用合并层(Flatten Layer)链接卷积层和全连接层。
- 步骤5,使用softmax layer标准化输出。
- 步骤6,优化训练结果。我们使用交叉熵(cross entropy)作为成本计量函数,取其均值。最优方法使用tf.train.AdamOptimizer()。
第三种方法:Retrain Inception V3。使用Retrain Inception V3 ,并利用迁移学习减少工作量。
我们得到pre-trained模型,移除原有顶层,训练新模型。然后分析在磁盘上的所有图像并计算它们的bottleneck值。脚本会运行4000次。每次运行都会从训练集中随机选取10个图像,找到它们的bottleneck值并注入最后一层得到预测结果。然后在反向传播过程中,根据预测结果和实际标签的比较结果去更新每层的权重。
摘自:http://geek.csdn.net/news/detail/197931
下一篇:江苏省信息化发展战略出炉 建成更高水平“智慧江苏”
上一篇:无
上一篇:无