Нет необходимости создавать 3 отдельных вывода, как предложено в принятом ответе.
Тот же результат может быть достигнут только одной строкой:
model.add(Dense(3, input_shape=(4,), activation='sigmoid'))
Вы можете просто использовать 'sigmoid'
активацию для последнего слоя:
from tensorflow.keras.layers import GRU
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation
import numpy as np
from tensorflow.keras.optimizers import Adam
model = Sequential()
model.add(Dense(3, input_shape=(4,), activation='sigmoid'))
model.compile(Adam(lr=0.1),
loss='categorical_crossentropy',
metrics=['accuracy'])
pred = model.predict(np.random.rand(5, 4))
print(pred)
Вывод независимых вероятностей:
[[0.58463055 0.53531045 0.51800555]
[0.56402034 0.51676977 0.506389 ]
[0.665879 0.58982867 0.5555959 ]
[0.66690147 0.57951677 0.5439698 ]
[0.56204814 0.54893976 0.5488999 ]]
Как видите, классы вероятностей не зависят друг от друга. Сигмоид применяется к каждому классу отдельно.