Что ж, без заполнения выходной сигнал стал бы меньше входного. Эффект сравним с эффектом уменьшения нормальной свертки.
Представьте, что у вас есть 1d-тензор с 1000 элементами и расширенное ядро свертки 1x3 с коэффициентом расширения 3. Это соответствует «общей длине ядра», равной 1 + 2free + 1 + 2free + 1 = 7. Учитывая ход из 1 выход будет 1d-тензор с 1000 + 1-7 = 994 элементов. В случае нормальной свертки с ядром 1x3 и коэффициентом шага 1 выход будет иметь 1000 + 1-3 = 998 элементов. Как видите, эффект можно рассчитать аналогично обычной свертке:)
В обеих ситуациях выходной сигнал станет меньше без заполнения. Но, как вы можете видеть, коэффициент расширения не влияет на масштабирование выходного размера, как в случае с коэффициентом шага.
Как вы думаете, почему в рамках Deeplab не выполняется заполнение? Я думаю, что в официальной реализации тензорного потока используется заполнение.
Лучший Франк
Похоже, что nid в выводе jstack - это идентификатор LWP Linux.
"http-342.877.573.944-8080-360" daemon prio=10 tid=0x0000002adaba9c00 nid=0x754c in Object.wait() [0x00000000595bc000..0x00000000595bccb0]
Преобразуйте nid в десятичное, и вы получите идентификатор LWP. В вашем случае 0x754c - это 30028. Этот процесс не показан в нашем выводе ps, но, вероятно, это был один из LWP, который вы пропустили для экономии места.
Вот небольшой фрагмент Perl, который вы можете использовать для конвейерного вывода вывода jstack to:
#!/usr/bin/perl -w
while (<>) {
if (/nid=(0x[[:xdigit:]]+)/) {
$lwp = hex($1);
s/nid=/lwp=$lwp nid=/;
}
print;
}
Из памяти, если Вы CTRL-BREAK на консоли Вы получите дамп текущих потоков и несколько их кадров отслеживания стека.
Из памяти (я не уверен, является ли это функцией IntelliJ IDEa, или это - значение по умолчанию в Java), но это скажет Вам, какой поток заведен в тупик, и которые возражают, что они ожидают на. Необходимо быть в состоянии перенаправить вывод в файл, и просто grep для ЗАВЕДЕННОГО В ТУПИК текста.
JConsole, VisualVM или другие профилировщики, такие как JProfiler также покажут Вам потоки и их стеки, однако если Вы не захотите использовать какой-либо внешний инструмент, я думаю, что CTRL-BREAK даст Вам, что Вы ищете.
Можно использовать JConsole для просмотра отслеживания стека потока.
, Если Ваше использование JDK 1.6.0_07 или выше, можно также использовать visualvm.
Оба инструмента обеспечивают хороший вид на все рабочие потоки в приложении. visualvm вполне немного более хорош, но надо надеяться видящий, что все потоки могут помочь Вам разыскать безудержный поток.
Проверка на потоки, которые являются всегда в состоянии ВЫПОЛНЕНИЯ. Когда у нас был безудержный поток, отслеживание стека будет постоянно изменяться. Таким образом, мы смогли сказать, какие методы цикл называл, и разыщите цикл.
Обратите внимание, что prstat
по умолчанию показывает отсутствие легких процессов, а не LWPID.
Чтобы просмотреть информацию для всех легковесные процессы для конкретного пользователя используют параметр -L
.
prstat -L -v -u weblogic
теперь используют LWPID, преобразовывают его в шестнадцатеричный и сопоставляют с nid из дампа потока