Проще говоря, для задачи регрессии ваш вывод обычно имеет размерность [1]
(если вы предсказываете одно значение).
Для задачи классификации ваши выходные данные должны иметь такое же количество измерений, которое равно количеству ваших классов (выходные данные являются вероятностями, их сумма = 1).
Таким образом, нет необходимости иметь одинаковые размеры входа и выхода. NN - это просто проекция одного измерения на другое.
Например,
[1, 10]
(к особенностям имущества), выходное значение составляет [1]
- цена [1, 11]
(те же характеристики + цена в списке), выходной сигнал равен [1, 2]
(вероятность класса 0
(не будет продано) и 1
(будет продано), например, [1; 0]
, [0; 1]
или [0.5; 0.5]
и т. д .; это двоичная классификация) Кроме того, равенство измерений ввода-вывода существует в более конкретных задачах, для Например, модели с автоматическим кодировщиком (когда вам необходимо представить ваши данные в другом измерении, а затем представить их обратно в исходное измерение).
Опять же, выходной размер - это размер выходов для 1 партии. Только один, а не из всего набора данных.
Используйте класс пользовательского адаптера. Я думал, что NormalizedStringAdapter сделает работу, но это только для немаршалинга, и это не делает то, что Вы хотите так или иначе.
public class MyNormalizedStringAdapter extends XmlAdapter<String, String> {
@Override
public String marshal(String text) {
return text.trim();
}
@Override
public String unmarshal(String v) throws Exception {
return v.trim();
}
}
затем украсьте поле своим адаптером как это:
@XmlElement(required=true)
@XmlJavaTypeAdapter(MyNormalizedStringAdapter.class)
String name;