Я следил за учебником по классификатору изображений с использованием Python и Tensorflow.
Сейчас я пытаюсь применить глубокое обучение к нестандартной ситуации. Я сделал программу моделирования продавцов / покупателей, в которой покупатели покупают камень, следуя его желанию. Камни имеют цвет, размер и процент изгиба. Чем ближе камень к желаемой ценности, тем больше покупатель может заплатить. Для продавца чем реже камень, тем выше должна быть цена. Затем программа генерирует 100000 покупок камня, чтобы накормить нейронную сеть, которая попытается обыграть других продавцов. Набор данных выглядит так:
Сейчас я пытаюсь создать свою нейронную сеть. В руководстве он использует два слоя Conv2D с функцией активации relu и MaxPooling2D, затем слой Flatten, слой Dense и, наконец, еще один слой Dense с функцией активации сигмовидной формы.
Прочитав некоторую документацию, я обнаружил, что слой Conv2D предназначен для матрицы, но мои данные уже плоские, поэтому я предпочитаю использовать только плотные слои.
Мой первый вопрос: нужен ли моей нейронной сети плотный слой с такой функцией relu:
model.add(Dense(64, activation='relu', input_dim(3)))
Если моя программа генерирует только положительные значения?
Мой второй вопрос: нужна ли моей нейронной сети сигмовидная функция, если я уже нормализовал свои данные, чтобы сделать их между 0 и 1, разделив их вот так? :
X[:,0] /= 256.0
X[:,1] /= 50.0
X[:,2] /= 100.0
Эти значения представляют собой максимальное значение каждого столбца. Так нужна ли мне сигмовидная функция?
Собственно моя нейронная сеть выглядит так:
model = Sequential()
model.add(Dense(64, activation='relu', input_dim(3)))
model.add(Dense(64, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
Но меня смущает эффективность моей модели. Может ли моя нейронная сеть работать? Если нет, то какие слои и функции активации мне нужно использовать?