#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 plustf.slice
для разделения выходных данных Dense3 ReLU. Но, как сказал Марк, для этого вам нужно использовать функциональный API.