昨天我用Keras创建了我的第一个卷积神经网络,但我忘记添加标签了,它竟然…不知怎么地就训练了,我完全不知道这是怎么回事。有人能解释一下它是如何在没有提供任何标签的情况下进行训练的吗?
Jupyter Notebook:http://nbviewer.jupyter.org/github/getrasa/Jupyter-Notebook-Share/blob/master/Untitled.ipynb
文件夹结构files/ train/ dogs/ dog.0.jpg … cats/ cat.0.jpg…files/ validation/ dogs/ dog.1301.jpg … cats/ cat.1301.jpgfiles/test/ (1-13images).jpg
回答:
这里没有魔法。从文档中可以看到:
flow_from_directory(directory): 接受一个目录的路径,并生成增强/归一化的数据批次。以无限循环的方式持续生成批次。
参数:
directory: 目标目录的路径。该目录应包含每个类别的子目录。每个子目录树中的任何PNG、JPG或BMP图像都将被包含在生成器中
只要你的数据被分割成对应于类别的子目录,ImageDataGenerator
就会从中生成标签。例如,考虑这个目录结构:
train/ cat/ dog/ eel/
flow_from_directory
默认会将这些视为分类,并在后台使用独热编码。这就是你获得标签的方式。
最后一点:由于你只有两个类别,你可以考虑将class_mode
更改为binary
。