Keras: сегментирование групп узлов на выходы с использованием цикла for - PullRequest
0 голосов
/ 20 октября 2019

Я хочу сгруппировать разные узлы слоя и запустить softmax для каждой группы.

Например, я хочу иметь 81 выход для предсказания генетической последовательности, по одному выходу для каждой буквы. Для каждого выхода есть четыре возможных значения, поэтому я хочу плотный слой с 81 * 4 единицами, и я буду делать softmax по четыре узла за раз. Как бы я это сделал? Я пробовал что-то вроде этого:

    def create_generator():
        input = Input(shape=(152,))
        x = Dense(152)(input)

        x = Dense(81 * 4)(x)
        x = LeakyReLU(0.2)(x)

        out = []

        # apply softmax in groups of four
        for i in range(81):
            bp = Activation('softmax')(x[i * 4:i * 4 + 3])
            out.append(bp)
        concatenated = concatenate(out)

        generator = Model(inputs=input, outputs=concatenated)
        generator.compile(optimizer=adam_optimizer(), 
        loss='categorical_crossentropy')

Но я получаю сообщение об ошибке "у объекта нетипа нет атрибута _inbound_nodes". Я думал, что использование сцепленного слоя из keras исправит это, но не повезло.

...