Модель CNN, Как плотный слой в CNN делится на два потока с помощью keras

#python #keras #deep-learning

Вопрос:

Я работаю над моделью CNN. В данной модели CNN я не могу справиться с тем, как разделить 4-й слой на два потока и получить вывод.введите описание изображения здесь

Я также построил модель в Керасе.

 def _build_model(self):
    model = Sequential()
   
    model.add(Conv2D(8, (3, 3), strides=4, padding='same', input_shape=self.state_size))
    model.add(Activation('relu'))
   
    model.add(Conv2D(2, (2, 2), strides=4, padding='same'))
    model.add(Activation('relu'))
   
    model.add(Flatten())        
    model.add(Dense(256, activation='relu'))
    model.add(Dense(32, activation='relu'))
    model.add(Dense(16, activation='relu'))
    model.add(Dense(self.action_size, activation='relu'))
 
    model.compile(loss='mse', optimizer=Adam())
    return model
 

Как с этим справиться? Был бы признателен за пример.

Комментарии:

1. Я думаю, вам нужно будет использовать «функциональный интерфейс», который позволяет использовать более общие графики, чем «прямые графики», которые вы получаете с помощью «Последовательного».

2. @MarkLavin спасибо за ответ. Можете ли вы дать мне несколько рекомендаций или руководств, как использовать «функциональный интерфейс»?

3. Об этом есть несколько хороших курсов Coursera, в том числе один из Имперского колледжа Лондона. Функциональный API описан в tensorflow.org/guide/keras/functional

4. Я рад продолжить обсуждение здесь.

5. @zoraizali вы, вероятно, могли бы использовать Lambda layer plus tf.slice для разделения выходных данных Dense3 ReLU. Но, как сказал Марк, для этого вам нужно использовать функциональный API.