Я новичок в машинном обучении и использовании нейронных сетей с керасом. Я пытаюсь использовать обучение с подкреплением вместе с нейронной сетью, которая в конечном итоге может предсказать правильные действия робота в монопольной игре, если он будет играть против людей.
Для этого я пытаюсь использовать нейронную сеть, которая получает массив из 23 чисел с плавающей точкой (определяющий состояние игроков) и выводит массив из 7 чисел с плавающей запятой (максимальное количество возможных действий, которые можно предпринять в данный момент). Моя текущая NN следующая:
model = Sequential()
model.add(Dense(150, input_dim=23, activation='relu'))
model.add(Dense(7, activation='sigmoid'))
model.compile(loss='mse', optimizer=Adam(lr=0.2))
Мое намерение состоит в том, чтобы иметь 3 слоя nn, со скрытым слоем в 150 (нейронов) и 7 нейронов в последнем слое.
#An input example would be:
state = [0.35,0.65,0.35,3.53...] # array of 23 items, float numbers.
output = model.predict(state)
#I expect output to be:
[0.21,0.12,0.98,0.32,0.44,0.12,0.41] #array size of 7
#Then I could simply just use the index with the highest number as the action to take.
action = output.index(max(output))
Я не уверен, почему, но вместо этого я получаю эту ошибку: ValueError: Error when checking input: expected dense_23_input to have shape (23,) but got array with shape (1,)
Я уверен, что было бы лучше, если бы у меня был только один нейрон последнего слоя, предсказывающий целые числа в диапазоне, для номера экземпляров с 1 по 7. Однако я не знаю ни одной функции активации, которая могла бы это сделать. Пожалуйста, не стесняйтесь предложить лучшие модели nn для этой цели, я был бы очень признателен. Я знаю, что это может быть не самой лучшей моделью для этой цели.
Но, по сути, главный вопрос здесь состоит в том, как мне ввести один размер массива 23 и вывести массив размера 7?
Спасибо !!