В идеале, обучающие данные должны иметь такое же распределение длин предложений, как и целевые тестовые данные. Например. в машинном переводе, если длинные предложения предназначены для перевода по окончательной модели, аналогично длинные предложения следует использовать и для обучения. Модель Transformer, по-видимому, не обобщает более длинные предложения, чем те, которые использовались для обучения, но ограничение максимальной длины предложения в обучении позволяет использовать более крупные размеры пакетов, что полезно ( Popel and Bojar, 2018 ). [111 ]
Вы правы, необходимо получить modelview матрицу и преобразовать вектор сами.
Для подтверждения см. эту ссылку в абзаце 9.120.
Лучше делать вычисление за пределами OpenGL. Матрица и Кватернионы, FAQ является хорошим ресурсом для изучения, как выполнить вычисления, если Вы уже не знаете. Вы выбираете 4x4 матрица образцового представления следующим образом
float modelview[16];
glGetFloatv(GL_MODELVIEW_MATRIX, modelview);
Вероятно, лучше сделать преобразования на стороне ЦП. Единственным другим путем я могу думать, должен использовать EXT_transform_feedback плюс вершинный шейдер, который делает только modelview преобразования.
Причина, почему opengl, вероятно, только не сделает этого для Вас, состоит в том, потому что вычисление не является частью конвейера рендеринга. и opengl (по большей части) только выполняет вычисления во время цикла дисплея. Таким образом, не имеет смысла обеспечивать подобные синхронные интерфейсы.