Керас свертка без глубины - PullRequest
0 голосов
/ 29 марта 2020

У меня есть набор из 512 фильтров 3x3 и 512-канальная карта объектов nxn, над которой я хотел бы свертывать фильтры (в пользовательском слое Keras). Однако я не хочу, чтобы каждый из 512 фильтров включал глубину 512 в свертку, а просто сворачивал соответствующее измерение в карте объектов. Например, 0-й фильтр 3x3 будет свертываться по 0-му каналу карты объектов для создания одномерного канала nxn (при условии одинакового заполнения), 1-й фильтр будет выполняться по 1-му каналу карты объектов до 511-й фильтр запускается над 511-й картой объектов. Таким образом, результатом этой операции будет другая 512-канальная карта объектов nxn.

Это общая структура, которую я имею до сих пор:

import tensorflow.keras.backend as K
class MyClass(Layer):
    def __init__(self, **kwargs):
        super(MyClass, self).__init__(**kwargs)
    def build(self, input_shape):
        self.filt = self.add_weight(name='filter',
                                          shape=input_shape,
                                          initializer='uniform',
                                          trainable=True)

    def call(self, inputs):
        # This is the problem line - how to make this on a channel-by-channel basis?:
        return K.conv2d(inputs, self.filt, padding='same')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...