Как разделить модель resnet50 сверху и снизу?

Нет, вы не можете нажать «через» элемент. Вы можете получить координаты щелчка и попытаться определить, какой элемент находился под элементом clicked, но это действительно утомительно для браузеров, у которых нет document.elementFromPoint. Затем вам все равно придется эмулировать действие нажатия по умолчанию, которое не обязательно тривиально, в зависимости от того, какие элементы у вас там.

Поскольку у вас есть полностью прозрачная область окна, вы, вероятно, будете лучше использовать его в качестве отдельных элементов границы вокруг, оставляя центр без препятствий, чтобы вы могли просто щелкнуть прямо.

-1
задан Ankish Bansal 15 January 2019 в 21:53
поделиться

1 ответ

Если вы не понимаете правильно, вы хотите устранить первый блок и последний.

Мой совет - использовать resnet.summary (), чтобы иметь возможность визуализировать все названия модели. Или даже лучше, если у вас есть тензорная доска, чтобы ясно видеть отношения.

Хотя вы можете знать, что завершение блока в Остаточной сети является суммой и только после активации. Активация будет тем слоем, который вы хотите получить.

Названия блоков аналогичны res2a ... Цифра 2 обозначает блок, а буква - «субблок».

На основе архитектуры Resnet50:

enter image description here

Если я хочу удалить первый остаточный блок, я должен искать конец из res2c. В этом случае я нашел это:

activation_57 (Activation) (None, 56, 56, 64) 0 bn2c_branch2a [0] [0]
__________________________________________________________________________________________________
res2c_branch2b (Conv2D) (None, 56, 56, 64) 36928 activation_57 [0] [0]
__________________________________________________________________________________________________
bn2c_branch2b (BatchNormalizati (None, 56, 56, 64) 256 res2c_branch2b [0] [0]
__________________________________________________________________________________________________
activation_58 (Activation) (None, 56, 56, 64) 0 bn2c_branch2b [0] [0]
__________________________________________________________________________________________________
res2c_branch2c (Conv2D) (None, 56, 56, 256) 16640 activation_58 [0] [0]
__________________________________________________________________________________________________
bn2c_branch2c (BatchNormalizati (None, 56, 56, 256) 1024 res2c_branch2c [0] [0]
__________________________________________________________________________________________________
add_19 (Add) (None, 56, 56, 256) 0 bn2c_branch2c [0] [0]
                                                                 activation_56 [0] [0]
__________________________________________________________________________________________________
activation_59 (Activation) (None, 56, 56, 256) 0 add_19 [0] [0]
__________________________________________________________________________________________________
res3a_branch2a (Conv2D) (None, 28, 28, 128) 32896 activation_59 [0] [0]

Входной слой - res3a_branch2a. В этой форме я прыгаю первый блок остатков.

activation_87 (Activation)      (None, 14, 14, 256)  0           bn4f_branch2a[0][0]              
__________________________________________________________________________________________________
res4f_branch2b (Conv2D)         (None, 14, 14, 256)  590080      activation_87[0][0]              
__________________________________________________________________________________________________
bn4f_branch2b (BatchNormalizati (None, 14, 14, 256)  1024        res4f_branch2b[0][0]             
__________________________________________________________________________________________________
activation_88 (Activation)      (None, 14, 14, 256)  0           bn4f_branch2b[0][0]              
__________________________________________________________________________________________________
res4f_branch2c (Conv2D)         (None, 14, 14, 1024) 263168      activation_88[0][0]              
__________________________________________________________________________________________________
bn4f_branch2c (BatchNormalizati (None, 14, 14, 1024) 4096        res4f_branch2c[0][0]             
__________________________________________________________________________________________________
add_29 (Add)                    (None, 14, 14, 1024) 0           bn4f_branch2c[0][0]              
                                                                 activation_86[0][0]              
__________________________________________________________________________________________________
activation_89 (Activation)      (None, 14, 14, 1024) 0           add_29[0][0]   

Если я хочу удалить последний блок остатков, я должен искать конец res4. Это активация_89.

Делая эти сокращения, мы имели бы эту модель:

enter image description here

resnet_cut = Model(inputs=resnet.get_layer('res3a_branch2a'), outputs=resnet.get_layer('activation_89'))
0
ответ дан Adria Ciurana 15 January 2019 в 21:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: