1

我最近下载了 Deeplearning for Java (DL4J),现在正在尝试使用卷积网络。我在主页和互联网上找到了一些工作示例,例如如何对图像进行分类,即识别人脸。我大致了解如何读取训练数据以及图像被标记为网络应该识别的正确标签(“Barack Obama - Picture 1”)。但是,从这里开始,我有点卡住了。我无法理解输出。就像在http://deeplearning4j.org/image-data-pipeline上描述的那样我们使用 ImageRecordReader 读取图像并从中创建训练数据。但是程序如何知道将一张图片分类为“巴拉克奥巴马”而不是“巴拉克奥巴马 - 样本图片 1”?还是网络会这样做?我不这么认为。然后我的下一个问题是更改应用程序,使其不仅识别对象,而且评估图像,有点像 AlphaGo 评估表示为图像的棋盘位置。那我该如何输入数据呢?例如,我可以用他们的分数标记培训委员会状态......但我不知道这是否很好。我希望这是可以理解的,非常感谢帮助和最少的样本!

谢谢,祝你有美好的一天奥利弗

4

1 回答 1

0

您引用的示例使用Wild 数据集中的 Labeled Faces,它具有以下文件夹结构:

lfw
├── Aaron_Eckhart
├── Aaron_Guiel
├── Aaron_Patterson
│   ├── Aaron_Patterson_0001.jpg

该类ImageRecordReader扩展了抽象BaseImageRecordReader类,该类在其initialize()方法中使用以下行 (131-134) 来创建标签数组:

File parentDir = imgFile.getParentFile();
String name = parentDir.getName();
if(!labels.contains(name))
    labels.add(name);

换句话说,它不使用 JPEG 文件的名称,而是使用其父文件夹的名称。

至于你的第二个问题:

然后我的下一个问题是更改应用程序,使其不仅识别对象而且评估图像,有点像 AlphaGo 评估表示为图像的棋盘位置。[..] 例如,我可以用他们的分数标记培训委员会状态......但我不知道这是否很好。

我建议从阅读以下论文开始: http: //www.nature.com/nature/journal/v529/n7587/fig_tab/nature16961_F1.html和以下大纲:https ://www.tastehit.com/blog /google-deepmind-alphago-how-it-works/(尤其是从 AlphaGo 部分开始)。

AlphaGo 依赖于两个不同的组件:树搜索过程和指导树搜索过程的卷积网络。[..] 总共训练了三个卷积网络,分为两种:两个策略网络和一个价值网络。两种类型的网络都将当前游戏状态作为输入,表示为图像。

[..]

价值网络提供了对游戏当前状态价值的估计:给定当前状态,黑人玩家最终赢得游戏的概率是多少?价值网络的输入是整个棋盘,输出是单个数字,代表获胜的概率。

考虑到游戏的当前状态,政策网络提供关于选择哪种行动的指导。输出是每个可能的合法移动的概率值(即网络的输出与棋盘一样大)。具有较高概率值的动作(动作)对应于具有较高获胜机会的动作。

于 2016-06-08T08:36:18.847 回答