#machine-learning #artificial-intelligence #lstm #deeplearning4j
Вопрос:
хотите адаптировать deeplearning4j пример UCISequenceClassification: https://github.com/eclipse/deeplearning4j-examples/blob/master/dl4j-examples/src/main/java/org/deeplearning4j/examples/quickstart/modeling/recurrent/UCISequenceClassification.java. Пример содержит одну функцию с одной меткой. Я хочу использовать этот пример в другом проекте точно так же, но … с дополнительной функцией. Итак, я попытался добавить функцию (только для примера: с постоянным значением 1, которое я добавил в код). Я безуспешно пробовал несколько способов. Кто-нибудь знает, как добавить функцию? Я предполагаю, что мне нужно выбрать другой SequenceRecordReader? Вот моя первая попытка:
Манипулировать вводом — заменить это:
for (String line : lines) {
String transposed = line.replaceAll(" ", "n"); // HERE WILL BE THE CHANGE(!!!)
//Labels: first 100 quickstartexamples (lines) are label 0, second 100 quickstartexamples are label 1, and so on
contentAndLabels.add(new Pair<>(transposed, lineCount / 100));
}
Манипулировать входными данными (добавить одну функцию) — с помощью этого:
for (String line : lines) {
String transposed = line.replaceAll(" ", "|1n"); // HERE IS THE CHANGE(!!!). I ADD VALUE 1
//Labels: first 100 quickstartexamples (lines) are label 0, second 100 quickstartexamples are label 1, and so on
contentAndLabels.add(new Pair<>(transposed, lineCount / 100));
}
Теперь я пытаюсь добавить эту функцию:
Оригинал:
SequenceRecordReader trainFeatures = new CSVSequenceRecordReader();
trainFeatures.initialize(new NumberedFileInputSplit(featuresDirTrain.getAbsolutePath() "/%d.csv", 0, 449));
Мои изменения:
SequenceRecordReader trainFeatures2 = new CSVMultiSequenceRecordReader("|",Mode.EQUAL_LENGTH);
trainFeatures2.initialize(new NumberedFileInputSplit(featuresDirTrain.getAbsolutePath() "/%d.csv", 0, 449));
К сожалению, это не работает, потому что он не создает набор данных в правильной форме.
Итак, главный вопрос, который мне нужно решить: как изменить SequenceRecordReader, чтобы включить вторую или несколько функций?Может быть, использовать другой считыватель вместо CSVMultiSequenceRecordReader? Или неправильное использование?
Спасибо за любые подсказки.
(Подсказка: пожалуйста, не комментируйте статическое значение 1 :-). Это должно просто отражать мой пример. Он будет заменен другим значением int, которое имеет смысл)
Ответ №1:
Другая функция будет зависеть от того, какую реализацию чтения записей вы используете. В вашем случае вы используете CSV, что означает, что каждая функция представлена в виде столбца в CSV. Метки похожи.
Вы можете прочитать наши документы здесь для более полного обзора темы: https://deeplearning4j.konduit.ai/deeplearning4j/reference/recurrent-layers
Таким образом, каждый файл представляет временной ряд. Каждый столбец в этом файле представляет функцию. Вам нужно будет сделать то же самое для меток.