Вы можете найти разные виды нелокального блока в LIB/ .
Вы можете визуализировать карту не_локальной внимания, выполнив шаги выполнения, показанные ниже.
Код тестируется на наборе данных MNIST. Вы можете выбрать тип нелокального блока в lib/network.py .
Если в моем коде что -то не так, пожалуйста, свяжитесь со мной, спасибо!










Выберите тип нелокального блока в lib/network.py .
from lib.non_local_concatenation import NONLocalBlock2D
from lib.non_local_gaussian import NONLocalBlock2D
from lib.non_local_embedded_gaussian import NONLocalBlock2D
from lib.non_local_dot_product import NONLocalBlock2D
Запустите demo_mnist_train.py с одним графическим процессором или многопользовательским графическим процессором для обучения сети. Тогда веса будут сэкономить в весах/ .
CUDA_VISIBLE_DEVICES=0,1 python demo_MNIST_train.py
# Or train with Automatic Mixed Precision based on pytorch 1.6.0
CUDA_VISIBLE_DEVICES=0 python demo_MNIST_AMP_train_with_single_gpu.py
Запустите nl_map_save.py , чтобы сохранить nl_map одного тестового образца в nl_map_vis .
CUDA_VISIBLE_DEVICES=0,1 python nl_map_save.py
Заходите в nl_map_vis/ и запустите nl_map_vis.py , чтобы визуализировать nl_map. (Советы: если выбранное вами нелокальный тип не является non_local_concatenation или non_local_dot_product (без работы Softmax), вам может потребоваться нормализовать NL_MAP в коде визуализации)
python nl_map_save.py
Выясните, как реализовать тип конкатенации , и добавьте код в Lib/ .
Исправьте ошибку в lib/non_local.py (старая версия) при использовании мульти-GPU. Кто -то делится со мной причиной, и вы можете найти ее здесь.
Исправьте ошибку 3D -объединения в lib/non_local.py (старая версия). Цените белок27 за указание на него.
Для удобства я разделил lib/non_local.py на четыре файла Python и перемещаю старые версии ( lib/non_loca.py и lib/non_local_simple_version.py ) в lib/backup/ .
Измените код, чтобы поддержать Pytorch 0.4.1 и переместить код, поддерживающий Pytorch 0.3.1
в non-local_pytorch_0.3.1/ .
Проверьте код с помощью Pytorch 1.1.0, и он работает.
Переместите код, поддерживающий Pytorch 0.4.1 и 1.1.0, на non-local_pytorch_0.4.1_to_1.1.0/ (на самом деле, я думаю, это также может поддержать Pytorch 1.2.0).
Чтобы визуализировать NL_MAP, некоторые коды были немного изменены. Код nl_map_save.py добавляется для сохранения nl_map (два нелокального слоя) одного тестового образца. Код Non-local_pytorch/nl_map_vis.py добавляется в визуализацию nl_map. Помимо, код является поддержкой Pytorch 1.2.0.
Код также хорошо работает в Pytorch 1.4.0 .
Код также хорошо работает в Pytorch 1.6.0 . Добавьте DEMO_MNIST_AMP_TRAIN_WITH_SILL_GPU.PY с автоматической смешанной точной подготовкой (FP16), поддерживаемой Pytorch 1.6.0 . Это может уменьшить память графического процессора во время тренировки. Более того, если вы используете GPU 2080TI (тензоры), скорость тренировок может быть увеличена. Более подробную информацию (например, как тренироваться с несколькими графическими процессорами) можно найти здесь
Убедитесь, что код хорошо работает в Pytorch 1.7.0 .
Убедитесь, что код хорошо работает в Pytorch 1.8.1 .
Убедитесь, что код хорошо работает в Pytorch 1.9.0 .
Убедитесь, что код хорошо работает в Pytorch 1.10.1 .
Убедитесь, что код хорошо работает в Pytorch 1.11.0 .
Убедитесь, что код хорошо работает в Pytorch 1.12.0 .
Удалить избыточный код net.train() в файлах кода обучения.
Убедитесь, что код хорошо работает в Pytorch 1.13.0 и 2.0.0 .