[背景音乐] 翻译: RyukaSuu |审阅: 19waa Coursera Global Translator Community
现在的问题是
我们能否用深度特征来改进我们的模型
记住当我们谈到深度特征的时候
我们研究了 在深度学习模块中
通过一种叫做转换学习的方式深度特征 可以用来训练模型
然后用它来预测图片
甚至能在 训练数据仅仅有为数不多的已标签的图片 的情况下
在这个例子中 我们来看一下训练数据的维度
有一个基础的概念 我们一共有2000张图片
不是一个很大的数据集
然后我们可以进行下一步
用深度学习2000多个图片中训练模型
这是你的下一步
所以我们要载入深度学习模型
这是已经编译好的
只要用Graphlab 进行载入就可以了
模型载入的数据是image net 这个数据
在这里
叫做imagenet_model
这个模型会传输150万张图片
有着1000个标签 是一个完全不同的数据
150万张图片 也是我们之前提到过的AlextNet 模型
它在ImageNet 比赛中取胜了
我提前训练过这个模型了 你可以用这个模型来
来训练我们的图片 并且添加新的一列
叫做deep_feature 深度特征
这新的一列就是
我们刚才载入deep_learning_model 所得到的
这个deep_learning_model
我会运用一个叫做 extract_feature 的函数来提取特征
能够提取那些深度特征
他所做的就是转换学习 能够把一个领域中学习到的特征
用到另外一个不同领域的数据集中
这边的数据就是我的的 image_traindata
这边仅仅用了两条代码
很简单
然后减小字体大小 可以看得更清楚一些
这两条代码用来做转移学习
所以我们用网上训练的特征
运用到Sframe 的数据中
计算深度特征仅仅需要几分钟
我现在就准备做这个
我会告诉你我们的深度模型
如果我给你显示iamge_traindata
我仅仅给你展示前几行
你可以看到我们有着图片ID 图片
也就是你看到的 然后就是标签 和一列叫做深度特征
所以说提前运算了 然后储存到SFrame
现在它已经被保存下了
它还有最后一列叫做image_array 有着原始像素
那是我们之前用来做训练原始像素模型的一列
所以说深度特征已经在这了
如果你运行这两行代码 你就能够自己在这个数据集中计算深度特征了
或者说在别的数据集中计算
然后让我们继续
现在我们有了深度特征
让我们来训练深度模型
有了深度特征
让我们训练分类器
所以我们会用深度特征训练一个分类器
所以我会叫做深度特征模型 而不再用原始像素模型
所以用.create这个指令 我们以前用过的
我们用.create这个指令 我们之前用过的
我们会用到深度特征 然后并把它用到简单的分类器中
仅仅是把它用到逻辑斯蒂模型
模型的输入数据是image_train_data
我们不再用原始像素
而是特征
所以会用到deep_features
最后我会说到标签 噢不 是目标
也就是我们所要预测的 会在标签这一列中
你去到那里
我们正在训练分类器
用到2000张图片
用之前训练完的特征
也就是那个2012年比赛中完成的
让我们来仔细研究这个模型吧 我们先用它应用到一些数据上
我要做的是
先输入标题
把深度模型用到第一组测试数据中
就像我们之前在原始像素模型中用到的一样 我们也会同样应用
所以记住 我们想要看前三张图
也就是索引为0 1 2的图片
来看一下这三张图到底是什么?
输入.show来显示
提醒一下应该是猫 车 猫
我们先运行一下预测的结果
会用到deep_feature_model
然后预测这三张图
输入的数据是image_test[0:3]
记住正确的标签是猫 车 猫
他的标签是 猫 机动车 猫
预测完全正确
完美!
原始像素模型真的很糟糕
如果用深度学习模型 前三个全对了
那我们来正式的用模型预测
下一步就是
计算测试深度学习的准确率
我们去到这里
我们该怎么做呢?
deep_features_model.evaluate这行代码
就像我们在原始像素模型中用到的
让我们来衡量结果吧
输入值是测试数据
也就是image_test
记住我们原始像素模型有着46%的准确率
有点糟糕
但是如果用深度学习模型 78%的正确率 很好了
已经到达预期的目标了
如果你去预测更多的数据 相比较46%而言 预测准确率还是很好
所以说深度特征提供了一个
一个仅仅用很小的数据 用来测试深度特征
然后能在分类任务中 做到很好的准确率
[背景音乐] 翻译: RyukaSuu |审阅: 19waa Coursera Global Translator Community