В зависимости от проблемы, которую вы хотите решить, вы можете использовать различные функции активации и функции потерь.
- Проблема регрессии: вы хотите предсказать цену здания. У вас есть N функций. Конечно, цена здания - это действительное число, поэтому вам нужно иметь
mean_squared_error
в качестве функции потерь и linear
активацию для вашего последнего узла. В этом случае вы можете иметь пару Dense()
слоев с активацией relu
, тогда как ваш последний слой - Dense(1,activation='linear')
. Между слоями Dense () можно добавить Dropout()
, чтобы уменьшить эффект переобучения (если имеется). - Проблема классификации: вы хотите определить, является ли кто-то диабетом c во время приема. учитывать несколько факторов / особенностей. В этом случае вы можете использовать снова сложенные слои
Dense()
, но ваш последний слой будет Dense(1,activation='sigmoid')
, так как вы хотите определить, является ли пациент диабетом c. Функция потерь в этом случае равна 'binary_crossentropy'
. Между слоями Dense () можно добавить Dropout()
, чтобы уменьшить эффект переобучения (если имеется). - Проблемы с обработкой изображений: здесь у вас наверняка есть стеки [
Conv2D(),MaxPool2D(),Dropout()
]. MaxPooling2D
- это операция, которая типична для обработки изображений, а также для некоторой обработки на естественном языке (не будем здесь останавливаться на этом). Иногда в сверточных архитектурах нейронных сетей используется слой Flatten()
. Его целью является уменьшение размерности карт объектов в одномерный вектор, размерность которого равна общему количеству элементов во всей глубине карты объектов. Например, если бы у вас была матрица [28,28], то при ее выравнивании она уменьшилась бы до (1784), где 784 = 28 * 28.
Хотя вопрос довольно широкий и, возможно, какой-то люди будут голосовать, чтобы закрыть его, я попытался дать вам краткий обзор того, что вы спросили. Я рекомендую, чтобы вы начали изучать основы нейронных сетей, а затем углубились в использование фреймворка, такого как TensorFlow или PyTorch.