• Ядро смещения устанавливает записи для отсутствующих экземпляров в NaN, а не в ноль.
  • Количество блоков в измерении Y, используемом в слое смещения, теперь соответствует количеству столбцов на экземпляр.
  • Добавлена ​​функция, вычисляющая количество требуемых итераций и потоков для входных операций.
  • В CublasBiasLayerTest добавлен повторно используемый метод тестирования прямого распространения.
  • Теперь есть два теста прямого распространения смещения cuBLAS: один с полной партией и один с неполной партией.
  • Ядра отсева теперь устанавливают для записей отсутствующих экземпляров значение NaN, а не ноль.
  • Блоки в y-измерении в ядрах отсева соответствуют столбцам экземпляра.
  • Удалены неиспользуемые параметры свойств устройства из CublasBiasLayer и CudaDropoutLayer.
  • Исправлено обратное распространение неполных пакетов в слоях cuBLAS.
  • Ядра активации и нормализации теперь устанавливают для записей отсутствующих экземпляров значение NaN, а не ноль.
  • Блоки в y-измерении в ядрах активации соответствуют столбцам экземпляров.
  • Все вхождения функции setToZero в форвардных ядрах теперь заменены на setToNan.
  • Установите конструкторы точек входа CUDA, слоев потерь и оптимизаторов на внутренние.
  • Ядра обратного распространения функции потерь теперь устанавливают для записей отсутствующих экземпляров значение NaN, а не ноль.
  • Удален заголовочный файл Zero CUDA.
  • Оптимизировано использование индексов внутри циклов в ядрах оптимизации.
  • Удалены спецификации связи C
  • Реализовано и протестировано прямое распространение в новом слое расширения свертки CUDA.
  • Повторно включена функция setToZero.
  • Уровень расширения CUDA обнуляет неиспользуемые записи. Это позволяет использовать cuBLAS для проекции после расширения.
  • Входные слои CUDA должны реализовывать значение, указывающее, имеет ли ввод фиксированную длину.
  • Представлен интерфейс CudaVariableLengthForwardLayer для слоев, которые могут обрабатывать ввод переменной длины.
  • CudaMaxPoolingLayer и CudaExpansionLayer реализуют CudaVariableLengthForwardLayer.
  • CudaLookupLayer хранит указатель на длину пакетов в предоставленной памяти.
  • CudaMaxPoolingLayer использует этот указатель для определения количества используемых столбцов. Отрицательная бесконечность используется для записей в неиспользуемых столбцах.
  • Пропагаторы CUDA перемещены в отдельные файлы.
  • Прямой распространитель CUDA разделен на CudaFixedLengthForwardPropagator и CudaVariableLengthForwardPropagator.
  • CudaNetwork выбирает между двумя распространителями на основе значения hasFixedLength точки входа.
  • CudaBackwardPropagation переименован в CudaBackwardPropagator
    Начал работать над обратным распространением в слое расширения CUDA.
  • Завершена реализация расширения обратного распространения для фильтров с длиной не больше размера деформации
  • Расширение ядра обратного распространения теперь использует итерации для поддержки размеров фильтров, превышающих размер деформации.
  • Реализован слой свертки CUDA для ввода фиксированной длины.
  • Исправлено использование переменной thisValueInIteration в другой ветке ядра расширения с обратным распространением.
  • Добавлена ​​CUDA-версия демонстрации встраивания/свертки.
  • Сокращено название «Сверточный слой» до «Сверточный слой».
  • Исправлено количество итераций в демонстрациях встраивания
  • CpuHighwayLayer и CpuMaxPoolingLayer перемещены в отдельные подпакеты.
  • CudaExpansionLayer перемещен в подпакет свертки.
  • Исправлено условие if в CudaLookupLayer, которое решает, сохранять ли входные длины.
  • Сеть CPU/CUDA и классы распространения перемещены в соответствующие сетевые подпакеты.
  • Лямбда printLoss перемещена в пакет потерь
  • Удалена запись iml из .gitignore.
  • CudaConvolutionLayer теперь поддерживает ввод переменной длины.
  • Ядро расширения хранит количество сверток для каждого экземпляра.
  • Исправлен вызов метода прямого распространения первого слоя в CudaForwardPropagation.
  • Исправлено вычисление количества позиций столбца фильтра в CudaExpansionLayer.
  • Удален интерфейс CudaPropagation.
  • Стандартный TREC использует фильтр только одной ширины.
  • Исправлены ссылки на плотный слой и сверточный слой в README.
  • Добавлена ​​CUDA-версия демонстрации TREC.
  • Упомянул демонстрацию в README и заменил образец кода созданием сверточной сети с ускорением на GPU.
  • Исправлена ​​ширина в демо CPU TREC.
  • Представлена ​​реализация хеш-таблицы CUDA для суммирования на основе ключей.
  • CudaHashing сопоставляет заданный массив целых чисел со слотами в хеш-таблице.
  • CudaGroupSum суммирует соответствующий массив с плавающей запятой, используя это сопоставление.
  • Добавлены ядра для заполнения одного или двух массивов постоянным значением и использования этих ядер для сброса значений в CudaHashing и CudaGroupSum
  • Реализована поддержка разреженных обновлений на уровне поиска CUDA с использованием CudaHashing и CudaGroupSum.
  • Уровень поиска CUDA использует отрицательный для записей в отсутствующих экземплярах.
  • Векторные данные копируются с хоста на устройство при освобождении ресурсов.
  • Добавлен тест агрегации градиента в CudaLookupLayer
  • Классы правил обновления CUDA наследуются от нового абстрактного класса BaseCudaUpdateRule.
  • BaseCudaUpdateRule обеспечивает основу для запуска ядра и управляет количеством единиц для плотных обновлений.
  • Коэффициент масштабирования градиента теперь вычисляется в функциях обновления ЦП и ядрах оптимизации CUDA.
  • Ядра оптимизации CUDA теперь поддерживают ввод переменной длины, игнорируя параметры с отрицательным идентификатором.
  • Добавлена ​​поддержка переменной длины в ядре смещения.
  • Улучшены имена и перенесен код в отдельные методы в SparseAccumulator.
  • Значение по умолчанию для обратной хэш-таблицы, используемой в SparseAccumulator, теперь равно -1.
  • Использование смещений обязательно в проекционных слоях, плотных слоях, сверточных слоях и слоях шоссе.
  • Члены состояния Forward в CpuProjectionLayer теперь делегируют обязательное состояние смещения вперед.
  • Заменена проекция кодировки в CpuAttentiveDecoder на взвешивание.
  • Теперь можно настроить символ, используемый CudaMaxPoolingLayer для идентификации неиспользуемых столбцов, с NaN в качестве параметра по умолчанию. Слой максимального объединения, созданный для слоя свертки, использует ноль для достижения совместимости с cuBLAS.
  • Исправлено сравнение максимумов деформации в ядре max-pooling.
  • Ядро max-pooling теперь игнорирует ненужные перекосы.
  • Ядра с обратным максимальным пулом учитывают индекс экземпляра и поддерживают ввод переменной длины.
  • Добавлен тест, который использует случайные данные для сравнения вывода слоя максимального пула CUDA с версией ЦП.
  • Исправлена ​​индексация градиента в ядре обратного расширения.
  • Ядро обратного расширения теперь устанавливает для неиспользуемых записей значение NaN.
  • Nan.cuh переименован в NaN.cuh.
  • Конструкторы слоев были установлены на внутренние.
  • Обновлен до Котлин 1.1.4–3
  • Упоминается проблема встраивания слова toy в README.