这是我第一次使用DL4J (Deep Learning for Java),也是我第一次使用卷积神经网络。我的目标是使用卷积神经网络给我一些关于图像的预测值。我自己收集并标记了我的图像。标签或预期输出由0到1之间的两个数字组成(我只是将它们写在文件名中,如0.01x0.87.jpg)。现在我找不到任何方法来使用DL4J使用的DataSetIterator类,这样我也可以设置我的标签值。
有没有一种简单的方法可以告诉DL4J,我想训练我的网络来识别图像0.01x0.01.jpg应该输出值0.01和0.01?
发布于 2020-02-11 20:14:33
你想要做的通常被称为回归。与您希望输出为0或1的分类相反,在回归中,任何值都可以是目标。
在您的例子中,您可能希望使用使用sigmoid (强制您的值在0到1之间)或identity (保持值不变,即允许它们在0到1范围之外)激活函数的网络体系结构。
由于您有两个要尝试预测的值,因此您还必须定义您使用的是两个输出。
关于你的模型架构,就到这里吧。
对于数据加载,您可以使用ImageRecordReader,但也可以向它传递您自己的PathMultiLabelGenerator。在实现PathMultiLabelGenerator接口时,您将获得字符串形式的图像的完整路径,并且可以对其执行任何操作,例如,删除文件结尾,在x上拆分,然后将文件名解析为DoubleWritable列表。DoubleWritable只是double的一个简单的包装类,所以创建它就像通过将实际值传递给构造函数来实例化它一样简单。
要创建数据集迭代器,现在可以按照RecordReaderDataSetIterator上的文档进行操作。
https://stackoverflow.com/questions/60167317
复制相似问题