Актуальный вопрос довольно двусмысленный.Я правильно догадываюсь, что вы хотите, чтобы кто-то реализовал недостающие две строки кода для сети?
model = Sequential()
model.add(Conv2D(40, (15, 15), activation='relu',
padding='same', input_shape=(64, 64, 1)))
model.add(MaxPooling2D((2, 2), padding='same'))
model.add(Conv2D(40, (15, 15), activation='relu', padding='same')) # layer 3
model.add(Conv2D(1, (15, 15), activation='linear', padding='same')) # layer 4
print(model.summary())
Чтобы получить 40 карт характеристик после 3-го уровня, мы просто сворачиваем с 40 различными ядрами.После слоя 4 должна быть только одна карта / канал объектов, поэтому здесь достаточно 1 ядра.
Кстати, эта цифра, похоже, взята из Сверточные нейронные сети для автоматической аннотации клеточных крио-сигналов.электронные томограммы ( PDF ) от Chen et al., статья Nature от 2017 года.
Обновление:
Комментарий: [...] почему авторы говорят, что всего 1600 ядер и есть сумма?
На самом деле, авторы, похоже, придерживаются довольно странной записи здесь.У них есть (imho) неправильный способ подсчета ядер.То, что они скорее имеют в виду, это веса (если даны ядра 1x1 ...).
Возможно, они не поняли, что форма ядер на самом деле 3-D, из-за последнего измерения, равного числукарты характеристик.
Когда мы разбиваем его, для 1-го слоя
- 40 ядер размером 15x15x1 (что составляет 40 * 15 ** 2 обучаемых веса)
- Нет ядер во 2-м слое
- 40 ядер размером 15x15x40 в 3-м слое (что составляет 1600 * 15 ** 2 обучаемых веса)
- 1 ядро размером 15x15x40 для 4-го слоя(что составляет 40 * 15 ** 2 тренировочных веса)